要点总结:
- 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
方法的第三个参数,即回调方法中也可以使用 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;
});
像上面这个例子,在回调函数中又依赖了其他模块(./components/app/app-root
),导出的模块alpha
其实就是exports
对象,上面挂载了IonicApp
属性
参考文献:
延伸阅读:
网友评论