我工作的一個角項目在被設計成非常模塊化分鐘 - sections of the app can be enabled and disabled for different clients using Webpack.這種結構是很好的工作對我來說,到目前爲止,但一個問題,我已經運行到正在研究如何處理可能並不總是存在的服務。訪問的角度服務,可能會或可能不存在
我目前的解決方案是非常簡單 - 我用$injector.has()
檢查服務目前存在的,如果是這樣,我用$injector.get()
抓住它:
function initialize($injector) {
if ($injector.has("barcode")) {
let barcode = $injector.get("barcode");
// Do stuff with the barcode service
}
}
這似乎是工作 - 不過,我可以」 t找到關於使用這種模式的很多信息,以及它是否有任何潛在的缺點。
所以,我的問題是:
- 是否有什麼注意事項使用注射器這樣,我應該知道的?
- 是否有這樣做的更好/更地道的方式?
明智的答案,非常感謝! Angular 2的可選依賴關係更多的是我所追求的 - 這更像是一個權宜之計解決方案,直到我們可以遷移到目前爲止(目前正在等待第三方UI框架進行更新,有望在本世紀的某個時候發生......) –
取決於根據您的需求,可能還有值得嘗試創建可用於可選項目的「存根」服務,從而允許您仍然擁有DI。我必須重新檢查,但是我相信Angular會允許您在先前提供的服務中加載一個新的同名服務。和/或你可以使用裝飾器(https://docs.angularjs.org/guide/decorators)替換或裝飾這些「存根」。也許值得重視複雜性。我沒有測試過這個... – JcT
是的,這聽起來像是值得研究的東西 - 只是增加的複雜性是否值得。我是我公司當時唯一的JavaScript人員,我將不得不教導其他人,所以我傾向於保持簡單:p –