2013-10-09 22 views
11

Şu an kafamı angularjs almaya çalışıyorum. Şu anda servislere bakıyorum, kod için de kod yazıyor.Dependancy enjeksiyon ve minification ile tip betikte açısal servis

Artık web'deki örneklerden, insanların yazı tipinde bir hizmet için aşağıdaki gibi bir şey kullandıklarını gördüm.

class Service 
{ 
    constructor(private $http: ng.IHttpService) 
    { 
    } 

    public MyMethod() 
    { 
     this.$http.get("/") 
      .success(null) 
      .error(null); 
    } 
} 

Şimdi bu küçültülmüş eğer yapıcı gelen $http kaybedecek ve açısal değişken adları gerektirir. Bu yüzden kontrol ettim ve kurucunun yerine $ inject kullanabileceğimi keşfettim, ancak bu aynı minification problemini de alacaktır.

İnsanlar bir taslak metinde nasıl minimize ve açısal davranır? Bunun nasıl ele alınması gerektiği konusunda bazı katı belgeler bulmaya çalışıyorum. Bana göre bu problemleri modern bir api içinde görmek garip görünüyor, bu yüzden bir yerlerde bir şeyleri kaçırmam gerekiyor.

+1

"ngAnnotate" modülünü gulp için uglifyid kullanmadan önce kullanabilirsiniz, böylece bağımlılıkların açısal olarak kaybolmasını önler. Örneğin: gulp.src (yollars.ts) .pipe (ts (ts.createProject ('tsconfig.json'))) boru (concat ('app.min.js')) boru (ngAnnotate ({kaldır : true, add: true, single_quotes: true})) (pipu() gut.dest ('www/js /')) – ekussberg

cevap

16

Sadece $inject sözdizimini kullanın. Örneğin. :

class Service 
{ 
    static $inject = ['$http'];  
    constructor(private $http: ng.IHttpService) 
    { 
    } 

    public MyMethod() 
    { 
     this.$http.get("/") 
      .success(null) 
      .error(null); 
    } 
} 

PS: http://www.youtube.com/watch?v=WdtVn_8K17E&hd=1

+0

Ancak bu şekilde, her bir 'Servis 'örneği kendi $ $ olur http 'referansı. Vanilya JavaScript'inde, bir açıda bu bağımlılıklara erişmek için yaygın olarak "angular.factory" yöntemi kullanılır. Bunu, Typescript'te başarmak için hangi en iyi uygulamaları önerirsiniz? – mhelvens

+0

Hizmetler tekildir. Sadece bir örnek olacak – basarat

+0

Javascript sınıfları (veya singletons) hakkında bilmiyor ve AngularJS de öyle. Hizmetler her şey olabilir. Ben yaş için hizmet olarak anında 'sınıfları' sunuyoruz. – mhelvens

0

anda resmi typescript derleyici hala DI sistem için çalışma zamanında kullanılabilir arayüzü meta yaymaz: Ben bu konuda ayrıntılı bir videoyu yaptı. Yayıcı genişletilebilirliği here ile ilgili bir sorun var. Bu arada, bir örnek proje oluşturmuş (An derleyicilerin uygulama modülünde bileşenleri kaydetmesini ve çalışma zamanında sınıf meta verilerini kullanarak bağımlılıkları enjekte etmesini sağlayan bir AngularJS 1.3 uygulamasının (arabirim meta verilerini yayan TS derleyicinin özelleştirilmiş bir sürümü). here'a bir göz atabilirsiniz.

İlgili konular