Skip to content

UMD 的全称是 Universal Module Definition。即通用模块定义

它提供了一个前后端跨平台的解决方案(支持 AMDCommonJS 模块方式)。

常见于第三方库

各种情况下的完整兼容版本可见github

6-1.基本原理

  1. 先判断 CommonJS 模块规范,即 exports 是否存在。存在的话,则使用 CommonJs 模块规范。

  2. 再判断 AMD 模块规范,即 define 函数和 define.amd 是否存在。存在的话,则使用 AMD 模块规范。

  3. 最后保持兼容,上述模块规范都不存在的话,则将模块公开到全局 windowglobal

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
  }
})