Fork me on GitHub

AMD、CMD、CommonJS和ES6对比

图片描述


什么是AMD、CMD、CommonJS?它们之间有什么区别?项目当中都是如何运用的?

AMD

AMD:异步模块定义

AMD是RequireJS在推广过程中对模块定义的规范化产出

1
2
3
4
5
6
7
8
9
define(['package/lib'],function(lib){
function foo(){
lib.log('hello world');
}
return {
foo: foo
};
});

CMD

CMD:同步模块定义

CMD是SeaJS在推广过程中对模块定义的规范化产出

1
2
3
4
5
6
//所有的模块都通过define来定义
define(function(require,exports,module)){
//通过reqiure引入依赖
var $ = require('jquery');
var Spinning = require('./spinning');
};

CommonJS

CommonJS:通过module.exports来定义的

在服务端一般通过CommonJS来定义模块化开发

1
2
3
4
5
6
exports.area = function(r){
return Math.PI * r * r;
};
exports.circumference = function(r){
return 2 * Math.PI * r;
};

ES6

ES6通过export/import来定义输入输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
export default{
props:["num"],
data(){
return{
}
},
methods:{
increment(){
this.$emit("incre");
import('./../util')
},
decrement(){
this.$emit("decre");
}
}
}