AMD#
使用 RequireJS 编写模块化定义规范产生,主要是用于浏览器端,特点:依赖必须提前声明好。
define('./index.js', function(code) {
// code 就是index.js 返回的内容
});
CMD#
使用 SeaJS 编写模块化定义规范产生,也主要是用于浏览器端,特点:支持引入动态依赖文件。
define(function(require, exports, module) {
var indexCode = require('./index.js');
});
UMD#
UMD:兼容 AMD,CommonJS 模块化语法。
webpack(require.ensure):webpack 2.x 版本中的代码分割。
CommonJS#
nodejs 中自带的模块化如下:
1.require,ES6 : 支持引入
2.module.exports : 对外批量导出
3.exports: 对外一个一个导出
//nodejs自带模块:require
const fs = require('fs');
//nodejs自带模块:module.exports, exports
const EventEmitter = require('events');
module.exports = new EventEmitter();
// 处理一些工作,并在一段时间后从模块自身触发 'ready' 事件。
setTimeout(() => {
module.exports.emit('ready');
}, 1000);
ES Modules#
export 和 import 两个命令分别如下:
export 导出你定义的模块变量
import 引入一个模块变量
//ES6 export 导出a.js文件:export { one,two }
export default three
//ES6 import 引入文件:
import { one, two } three from 'a.js'
摘取以上 AMD,CMD,UMD 的内容来自原文Github