AMD
AMD是一步模块规范,RequireJS就是采用这种规范实现
// 文件名: foo.js
define(['jquery'], function ($) {
// 方法
function myFunc(){};
// 暴露公共方法
return myFunc;
});
定义的第一个部分是一个依赖数组,第二部分是回调函数,只有当依赖的组件可用时回调函数才会执行。
CommonJS
Node遵循的是CommonJS规范
// 文件名: foo.js
// 依赖
var $ = require('jquery');
// 方法
function myFunc(){};
// 暴露公共方法(一个)
module.exports = myFunc;
UMD通用模块规范
UMD兼容了AMD和CommonJS,还支持全局规范
((root, factory) => {
if (typeof define === 'function' && define.amd) {
//AMD
define(['jquery'], factory);
} else if (typeof exports === 'object') {
//CommonJS
var $ = requie('jquery');
module.exports = factory($);
} else {
//都不是,浏览器全局定义
root.testModule = factory(root.jQuery);
}
})(this, ($) => {
//do something... 这里是真正的函数体
});