UMD
Universal Module Definition 通用模块定义规范
可以通过运行时,或者编译时,
让同一个代码模块在使用 CommonJs、CMD 甚至是 AMD 的项目中运行
UMD 没有自己专有的规范,是集结了 CommonJs、CMD、AMD 的规范于一身
- 在定义模块的时候,会检测当前使用环境和模块的定义方式
- 将各种模块化定义方式转化为同样一种写法
- UMD 规范将浏览器端、服务器端甚至是 APP 端都大统一
((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, ($) => {
//todo
});
https://www.jianshu.com/p/6e61bf5c4d23
AMD
Asynchronous Module Definition 异步模块定义规范
CommonJs 模块化规范的超集
define(id?, dependencies?, factory);
// moudle-a.js
define('moudleA', function() {
return {
a: 1
}
});
// moudle-b.js
define(['moudleA'], function(ma) {
var b = ma.a + 2;
return {
b: b
}
});
CMD
Common Module Definiton 通用模块定义规范
运行于浏览器之上, Sea.js
**
define(factory);
**
// moudle-a.js
define(function(require, exports, module) {
module.exports = {
a: 1
};
});
// moudle-b.js
define(function(require, exports, module) {
var ma = require('./moudle-a');
var b = ma.a + 2;
module.exports = {
b: b
};
});
commonJS
CommonJs 是一种 JavaScript 语言的模块化规范,通常会在服务端的 Nodejs 上使用
//moudle-a.js
moudle.exports = {
a: 1
};
//moudle-b.js
var ma = require('./moudle-a');
var b = ma.a + 2;
module.exports ={
b: b
};