現在我建議您在JavaScript中將ES2015模塊作爲本地模塊系統進行研究。它有兩個 - 像CommonJS這樣的簡單語法和像AMD這樣的異步加載模塊。
// my-module.js
export const foo = "foo";
export function bar() { return "bar"; };
...
// main.js
import { foo, bar } from "./my-module.js";
console.log(foo, bar());
本身它僅由Chrome 60+的那一刻是支持的,但是你把它用的WebPack或SystemJS任何瀏覽器的工作。 我個人非常關注漸進式增強功能,並熱衷於通過「第一個字節」提供核心用戶體驗。在這方面,我最喜歡將兩種方法(編譯同步和加載的異步模塊)結合在一個應用程序中以獲得最佳性能(使用Webpack)的能力。因此,您可以決定將哪些模塊編譯成單個文件,並根據需要加載哪些模塊(假設您控制它們的加載方式)。
Promise.all([
import("./module-foo"),
import("./module-bar"),
import("./module-baz")
]).then(moduleExports => {
console.log(moduleExports);
}).catch((e)=> {
console.error(e);
});
在這篇博客 https://medium.com/@sheiko/state-of-javascript-modules-2017-6548fc8af54a 我描述了一個能究竟如何實現它。請享用!
'當你在單個js文件中連接所有的模塊'然後沒有。你是對的,不需要AMD,實際上沒有任何意義。另請閱讀http://requirejs.org/docs/commonjs.html – vinayakj
您應該考慮的另一個選項是支持AMD,CommonJS和ES6模塊系統的[Webpack](http://webpack.github.io/)。 –
像vinyakj寫道,如果連接到一個文件,不需要AMD。但是如果你關心一些懶惰的代碼,你可以看看[angular-require-lazy](https://github.com/nikospara/angular-require-lazy)的一些想法。 –