簡體   English   中英

AngularJS中的依賴注入是否僅適用於Angular“Objects”?

[英]Does Dependency Injection in AngularJS only work with Angular “Objects”?

我開始使用AngularJS,而我正試圖將依賴注入包裹起來。 具體來說,我試圖了解DI與使用RequireJS聲明依賴關系之間的差異。

Angular中的DI是否只適用於某些angular.module上定義的“對象”(工廠,服務,模型)? 例如,我可以依賴一些外部庫,比如使用DI的jQuery嗎?

一般來說,RequireJS中的依賴管理和Angular中的DI之間的區別可以這樣說:

RequireJS僅在首次需要時加載依賴項(延遲加載)並確保在執行之前存在所有依賴項,而Angular DI允許在運行時輕松更改依賴項,只要它的接口保持不變即可?

最后,DI總是傳遞依賴的實例嗎? 每次都是一個新實例,還是一個單例? 它可以通過我可以實例化的“類”定義嗎? 例如,如果我需要將選項傳遞給構造函數,該怎么辦?

Angular中的DI是否只適用於某些angular.module上定義的“對象”(工廠,服務,模型)?

是。 該模塊實際上是服務等的包裝器。

我可以依賴一些像使用DI的jQuery這樣的外部庫嗎?

是的,我們這樣做: myModule.constant("jQuery", window.$)

每次都是一個新實例,還是一個單例?

除了$scope之外,Allways是一個單身人士。 此外,控制器全部被重新實例化(但控制器功能當然仍然是單例)。

它可以通過我可以實例化的“類”定義嗎?

當然是。 只需從定義函數返回構造函數,例如:(編輯:這必須與factory一起使用;使用service將實例化MyClass並使用實例作為服務值)

factory("Xxx", function(dep1, dep2) {
    function MyClass() {
        ...
    }

    MyClass.prototype.method = function() ...

    return MyClass;
});

這也是你可以用RequireJS做的。


至於與RequireJS的區別:我可以確定的一點是,RequireJS包含一個腳本加載器以及一個DI框架(以及優化器)。 所以Require(AMD)模塊與腳本文件有1-1關系。 另一方面,Angular模塊和服務與文件沒有必需的關系。

除此之外,它們看起來與我相似。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM