關於angularjs依賴注入的整理


  初學angularjs階段,剛剛看到菜鳥教程的angularjs依賴注入。現在整理一下:

       1.含義:一個或更多的依賴(可以理解為模塊關系依賴)或服務(分為內建服務[例如$http,$tiomeout等]和自建服務),被注入(或引用到)一個獨立對象中,成為該對象的一部分。

        舉個栗子:①一個存在於社會中的人。很多事情不必親自去做,社會為他提供了各種服務,例如圖書館,地鐵,公交,公園等。他想乘坐地鐵去某個地方,不必自己造地鐵,只要花錢(注入)就可以使用這個服務。當然他也可以自己定制個性化服務(社會提供的服務可以理解為內建服務),他可以自己定制一個勞斯萊斯(自建服務),不去去苦哈哈的擠地鐵了。

         ②同樣的這個人,不僅是個體。更是各種關系(依賴)中的人。比如:張三想去某國內頂級醫院看專家號,而自己的妻子的父親正好和這個專家是熟人,那張三就可以輕松的看到專家號。而不去自己去排隊。

         ③一個人可以動用社會的服務和自己經營的各種人際關系。去完成很多事情,而不必親力親為。而這些用社會的服務和自己經營的各種人際關系,成為這個人的一部分

       2.目的:高內聚,低耦合。

        題外話:我怎么感覺是為了偷懶呢。自己想把自己的工作分給別人,但又要保證工作質量的做法。哈哈

       3.分類:

        1)內建服務:據說“AngularJS 內建了30 多個服務”。這是菜鳥教程里面一個關於服務的介紹:http://www.runoob.com/angularjs/angularjs-services.html

        2)自建服務:同樣是菜鳥教程的介紹:http://www.runoob.com/angularjs/angularjs-dependency-injection.html

          雖然有例子,不過對於我這種小白來說,還是不清楚。所以上網整理一下相關資料,自建服務的方式主要由三種: Factory  Service   Provider:

          ①factory方法。該方法在函數里面定義了一個對象,然后給這個對象添加屬性和方法,最后返回這個對象:

         

   factory也可以注入內建服務:

        

       ②service方法與factory方法的不同,service方法去掉了return,實例化了一個類:

       

  service也可以注入內建服務。同時factory返回的是對象,service"返回"的是類,factory返回的對象可以被注入到service中進行使用:

      

      ③provider是唯一一個可以傳進 .config() 函數的 service。目的是產生一個可以配置的service。它可以在 service 對象啟用之前,先進行模塊范圍的配置

      

      3)最后,還要說一下。ps:不要把邏輯都寫在controller里面,controller這一層應該很薄。因為controller在不用時(如:切換或者刷新頁面時)就會被銷毀、清空,而service在應用生命周期結束時(如:關閉瀏覽器時)才會被清空。所以應該使用service,然后把service注入到controller里面,而讓controller起一個初始化的作用。

          具體的原因看這里-這是開源中國上的對原文的翻譯 :http://www.oschina.net/translate/angularjs-factory-vs-service-vs-provider    ; 如果你英語水平不錯,可以看看原文,里面有原文鏈接,不過需要fq。

       小白正在學習階段,如果總結的那里有錯誤的地方,懇請大家一定指出來。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com