2016-04-21 68 views
4

我有一個稱爲app的主角模塊。它依賴於'app.items'模塊,它也依賴於ngResource。所以它可以在使用$ resource使用服務的服務中調用一些後端路由。爲什麼角模塊可以使用其他模塊的依賴關係?

另外我有另一個名爲'app.categories'的模塊,主模塊也將它用作依賴項。該模塊有一個類別服務,它使用$ resource將請求發送到後端。但是當我從'app.categories'模塊中刪除'ngResource'依賴項時,它依然有效。

爲什麼會發生這種情況?這不是錯誤的行爲?

+0

我認爲重複的依賴關係只包含一次,每個人都使用該依賴關係。當兩個依賴關係之間存在衝突時會出現問題,在這種情況下,我認爲爲特定模塊加載了模塊特定的依賴關係 – Minato

回答

0

當你說這是錯誤的行爲得到答案,你有什麼基礎上?如果AngularJS團隊不這樣想,那只是錯誤的。

我同意,你可以說,這將是理想的框架或語言來拒絕訪問通過引用模塊引用的模塊定義的功能,因爲刪除模塊C中的引用將打破模塊A.

然而,無論出於何種原因,AngularJS都無法如此。這可以在the source中找到,它會遞歸地查找所有模塊和參考模塊,並運行提供程序(控制器,服務等)和每個模塊的塊,最後運行所有module.run塊。

+0

刪除組件在設計這種行爲時應該考慮什麼。想象一下,當你移除一些模塊但是仍然在其他模塊中使用,然後很長時間不被注意時,可能會刪除一些依賴關係,然後開發人員甚至不知道拋出錯誤的確切原因是什麼。 – naneri

+0

你說的沒錯,但我認爲你可以稱AngularJS的行爲錯誤。許多語言和框架的工作方式各不相同,我不會稱任何一種語言和框架絕對錯誤或絕對正確。他們只是不同的,你可以選擇你選擇哪一個工作。 –