UMD
的全称是 Universal Module Definition
。即通用模块定义。
它提供了一个前后端跨平台的解决方案(支持 AMD
与 CommonJS
模块方式)。
常见于第三方库。
各种情况下的完整兼容版本可见github
6-1.基本原理
先判断
CommonJS
模块规范,即exports
是否存在。存在的话,则使用CommonJs
模块规范。再判断
AMD
模块规范,即define
函数和define.amd
是否存在。存在的话,则使用AMD
模块规范。最后保持兼容,上述模块规范都不存在的话,则将模块公开到全局
window
或global
。
以 Vue.js
代码为例:
js
(function (global, factory){
if (typeof exports === 'object' && typeof module !== 'undefined') {
module.exports = factory()
} else if (typeof define === 'function' && define.amd) {
define(factory)
} else {
global = global || self
global.returnModule = factory()
}
})(this, function () {
return {
// module
}
})