我在這裏做什麼有點困惑。我見過很多人在JS中創建模塊,但每個人通常都以不同的方式創建模塊。我見過人們把他們的整體模塊包裝在一個(function(){})();
中,或者他們聲明一個對象字面值,或者做一些像window.Module = {};
一樣瘋狂的東西。我想知道什麼是最好的選擇(如你認爲最有用的)。幫助真的很感激,謝謝。如何創建JS模塊?
回答
我會說:這取決於你的「模塊」的最終用法。如果它是內部使用的東西,這意味着您的企業之外沒有其他人會使用它,那麼只要您都同意採用適當的方法,就可以使用任何東西。否則,如果它被其他人使用:你創建的全局變量越少,就越好。例如,jQuery使用「$」和「jQuery」作爲全局變量(也許是其他人,但我不確定)。當人們添加模塊時,他們總是將它們添加到window.jQuery.[Under jQuery var]
,其中[Under jQuery var]
應在jQuery文檔上閱讀以供正確使用。
只有一個官方解決方案來創建JavaScript模塊。你所看到的任何東西都是爲這個解決方案填充的,或者是對真實事物的蒼白迴應。
的基本語法如下:
import otherStuff from "otherStuff.js";
var myThing = {};
myThing.stuff = function(){ /*...*/ };
myThing.do = function(){ otherStuff.doOther(););
export default myThing;
它可以變得複雜得多,但基本是:
- 你的模塊必須是唯一的文件。一個文件是一個模塊。
- 您的模塊應該可能出口的東西,雖然這不是嚴格必要的。
這是JavaScript的管道。不幸的是,沒有人能夠就模塊的官方說明書達成一致,所以它們不在任何不久的將來發布的軌道上。也就是說,規範是under development,以及一個實現它的polyfill has been created。
使用官方模塊語法的最佳方法是通過BabelJS運行它並編譯爲像Require這樣的墊片(它使用AMD格式),因此您可以在不使用裝載程序規範的情況下使用它。
可否回答我爲什麼很多人看到ECMAScript6的答案,即使它不是一歲?我們不應該考慮更廣泛的解決方案嗎? –
@MasterDJon,ECMAScript2015模塊規範已定稿[近2年](https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-07/jul-30.md),並已一直在開發中的時間遠遠長於此。它是語言規範的一部分。我不確定比「使用將在每個JS運行時實現的官方語言規範」要多得多。我現在缺乏支持,通過像Babel這樣的翻譯人員回答。 – rockerest
@MasterDJon「我們不應該考慮更廣泛的解決方案嗎?」 ---你當然可以。其中一個也可能將w3m和lynx作爲其支持的瀏覽器,而其他則只是使用實際的現代標準 – zerkms
- 1. 如何創建JS
- 2. 你如何創建一個Perl模塊?
- 3. 如何在Magento中創建模塊
- 4. 如何創建一個pam模塊?
- 5. 如何創建自定義模塊
- 6. 如何在C中創建模塊
- 7. 如何在Android Studio中創建模塊
- 8. 如何使用Typescript創建node.js模塊
- 9. 如何創建PowerShell 2.0模塊?
- 10. 如何創建tar -ed npm模塊
- 11. 如何創建Magento 1.6運輸模塊?
- 12. 如何爲npm模塊創建聲明?
- 13. 如何創建一個Play模塊?
- 14. 如何創建多模塊分配?
- 15. 如何在asp.net中創建模塊?
- 16. 如何創建和加載GTK模塊?
- 17. 如何創建「虛擬」模塊對象?
- 18. 如何創建一個登錄模塊
- 19. 如何在spring中創建模塊
- 20. 創建vtiger模塊
- 21. 創建DotNetNuke模塊
- 22. 創建OTRS模塊
- 23. 創建模塊Java
- 24. 如何在Angular2中爲多個模塊創建包裝模塊?
- 25. 創建一個子模塊模塊
- 26. 如何使用webpack模塊捆綁器創建單個js文件包 - 角
- 27. 創建於JS一個模塊,必須從一個RESTful API
- 28. 創建封裝角度js特性的實用程序模塊
- 29. 在模塊中創建一個對象及其實例JS,NODE
- 30. 當創建angular2模塊
從哪個角度看「最好」?沒有什麼是絕對理想的 – zerkms