要点总结:
- 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属性
参考文献:
延伸阅读:













网友评论