我讀了關於DI和DI in Angular.js。Angular.js - Javascript依賴注入
根據我的理解,Angular.js中的DI表示Angular.js允許控制器,工廠,服務或其他人指定依賴關係,而不需要創建依賴關係。
問題:
- 在某些點的依賴性已經被創建,使得這裏的依賴性創建沒有死的地方,我該如何理解?
如果我有:
var thing = function(dep){ this.dep = dep || new depCreator(); }
這是死的?或取決於是否將
dep
傳遞給函數?根據我所看到的,DI意味着允許設置一個依賴關係,最後是一個函數還是對象,這是否意味着將初始化/配置/數據與程序的其他部分分開(邏輯?我們也可以初始化邏輯)?:var dep1 = 'qwe'; var thing = function(dep){ this.dep = dep; } var diedThing = new thing(dep1);
這將允許設置
dep1
在配置文件中,例如。如果普通的JavaScript實現DI是:中
var thing = function(dep){ this.dep = dep; }
代替
var thing = function(){ this.dep = new depCreator(); }
這是正確的?
但是如果depCreator依賴於配置文件(或提取的配置)會怎麼辦?
當我讀到Angular.js有(?)DI時,認爲這個DI意味着Angular.js爲我創建和搜索依賴關係是否正確?還有其他的意義嗎?最後,如果DI非常複雜,但意味着將配置與實現(或邏輯?)分開,爲什麼不把它稱爲單一責任原則,即該方法做了什麼方法,配置做了什麼配置是的,等等。
最後,DI是我一個主觀的概念,這是你如何想象和分裂的責任在某些應用中,這是甚至接近正確的嗎?
對不起,長期以來的問題。
一般而言,'DI'只是一個奇特的名稱,說'傳遞引用,你會得到所有可用的方法.'這更像是委託模式。 – zsong
那種DI簡單地使用函數的形式參數作爲有意義的非本地標識符,將參數名稱與常見角對象(如$ scope)中的屬性進行匹配。任何嗅探匹配都會被前置到調用該函數的「apply()數組」中。 – dandavis