一、AMD
全称:Common Module Definition 通用模块定义
典型类库:require.js
写法规范
define(['jquery', 'lodash'], function($, _) {
function a() {}
function b() {}
function c() {} // 私有
return {a, b}
});
二、 CDM
全称:Asynchronous Module Definition 异步模块定义
典型类库:Sea.js
写法规范
var $ = require('jquery');
var _ = require('lodash');
function a() {}
function b() {}
function c() {} // 私有
module.exports = {a, b}
三、UMD
全称:Universal Module Definition 通用模块定义
兼容AMD和CMD
写法规范
(function (root, factory) {
if(typeof define === 'function' && define.amd) {
// AMD
define(['jquery', 'lodash'], factory);
} else if(typeof exports === 'object') {
// Node、CommonJS
module.exports = factory(require('jquery'), require('lodash'));
} else {
root.returnExport = factory(root.jQuery, root._); // root即window
}
})(this, function($, _) {
function a() {}
function b() {}
function c() {} // 私有
return {a, b}
});