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