要點總結:
- AMD:異步模塊寫法(
define中可以用exports,exports其實就是導出的模塊對象) - CommonJS:同步模塊寫法(使用
exports或module.exports來導出模塊) - UMD:通用模塊寫法,即 AMD + CommonJS
UMD寫法示例:
(function(root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD
define(['jquery'], factory);
} else if (typeof module === "object" && typeof module.exports === "object") {
// Node, CommonJS之類的
module.exports = factory(require('jquery'));
} else {
/**
* 瀏覽器全局變量(root 即 window)
* returnExports即綁定到window對象上的變量名
*/
root.returnExports = factory(root.jQuery);
}
}(this, function($) {
// 方法
function myFunc() {
// 與 $ 有關的一些邏輯代碼
};
// 暴露公共方法
return myFunc;
}));
注意事項:
AMD定義模塊時,define方法的第三個參數(shù),即回調方法中也可以使用 require和exports,exports就是你導出的模塊對象,所以,你可以將屬性或方法掛載到exports上
define("alpha", ["require", "exports"], function (require, exports) {
var app_root_1 = require("./components/app/app-root");
exports.IonicApp = app_root_1.IonicApp;
});
像上面這個例子,在回調函數(shù)中又依賴了其他模塊(./components/app/app-root),導出的模塊alpha其實就是exports對象,上面掛載了IonicApp屬性
參考文獻:
延伸閱讀: