UMD 叫做通用模块定义规范(Universal Module Definition)
其逻辑是使用CommonJs、CMD、AMD 的规范于一身,然后将各种模块化定义方式转化为同样一种写法。
示例
(function(root, factory) {
console.log(root)
console.log(factory)
console.log(typeof define === 'function')
console.log(typeof exports === 'object')
if (typeof define === 'function' && define.amd) {
define(factory);
} else if (typeof exports === 'object') {
module.exports = factory();
} else {
root.NProgress2 = factory();
}
})(this, function() {
const NProgress2 = {}
NProgress2.version = '0.1.1'
NProgress2.start = function() {
console.log('NProgress2.start')
return 'ss'
}
NProgress2.done = function(e) {
console.log('NProgress2.done')
return 'e:' + e
}
return NProgress2
});
步骤:
1.定义factory函数,也就是工厂函数,负责返回需要导出的内容(对象,函数,变量等)
2.挂载,通过this指向,确定挂在位置,默认是当前环境(window、global)
3.使用:根据导出/引用逻辑来判断使用的变量名及其生命周期、挂载方式等
tips:默认多次加载,后一个覆盖前一个