我在互聯網的不同文章中看到很多,並且聽到很多名稱空間都是古老而邪惡的東西。我聽說很多你應該使用帶有模塊加載器而不是命名空間的模塊,但我不明白使用它們有什麼客觀的好處。我已經閱讀了關於命名空間的不同論點,但他們似乎對我並不那麼有說服力。我將列出一些參數,你們請嘗試用一些真實世界的例子來解釋爲什麼它們是有效的:在Typescript/JavaScript中名稱空間有一些客觀的負面現象
- 命名空間創建至少1個全局變量。但那有什麼問題?我不在乎是否有一個叫做angular的全局變量。它會造成什麼危害?
對於模塊,消費者決定要爲導入的變量命名。命名導入的能力真的給了我什麼?有多大可能會有2個變量命名爲angular?而在這些少數情況下會出現重複的變量名我們不能僅僅做到這一點(我沒有測試過這一點,但它應該在理論工作):
var someOtherName = angular; var angular = function() { };
模塊與模塊裝載機使捆綁更容易因爲他們把腳本按正確的順序排列。但爲什麼他們不這樣做,當你明確地告訴他們的順序,通過在每個文件的頂部添加導入?同樣,當你在tsconfig.json中使用「outFile」選項將三斜槓引用放在文件的頂部時,Typescript會按照正確的順序構建JavaScript。這與進口有什麼不同?
模塊裝載機提高了性能。這個讓我很困惑。假設我使用Typescript或.NET框架的捆綁工具生成了一個巨大的JavaScript文件,性能會不會相同,因爲在這兩種情況下我們都有1個文件? SystemJS會根據需要動態加載這些腳本。這個更有意義,但如果我最終得到一個25kb的JavaScript文件,如果按需加載每個kb,我會獲得多少性能提升?畢竟,它只有25kb。
即使假設模塊和模塊加載器比綁定到一個文件中並引用它在html中更好,如果我使用模塊加載器來構建庫,是否意味着使用我的庫的任何人都需要安裝加載器依賴項太?
在此先感謝您。
歡迎來到Stack Overflow!請[參觀],環顧四周,並通讀[幫助],尤其是[*我如何提出一個好問題?](/幫助/如何問),[*什麼類型的(/ help/dont-ask)和[*我可以在這裏詢問什麼主題?*(/ help/on-topic)關閉原因:*「許多好問題都會產生某種程度的問題基於專家經驗的意見,但對這個問題的回答往往幾乎完全基於意見,而不是事實,參考或具體專業知識。「*和/或過於寬泛(詢問**一個問題/問題)。 –