1.什么是AMD、CMD、CommonJs?
AMD(異步模塊定義)是RequireJS在推廣過(guò)程中對(duì)模塊定義的規(guī)范化產(chǎn)出,它是一個(gè)概念,而RequireJS實(shí)現(xiàn)這個(gè)概念??梢酝ㄟ^(guò)require引用加載。
RequireJS特點(diǎn)是依賴前置,即在定義前面通過(guò)數(shù)組的形式加載所有的依賴。
define(['package/lib'], function (lib) {
function foo() {
lib.log('hello world');
}
return {
foo: foo
};
});
CMD(同步模塊定義)是SeaJS在推廣過(guò)程中對(duì)模塊定義的規(guī)范化產(chǎn)出,SeaJS是CMD這個(gè)概念的實(shí)現(xiàn)。特點(diǎn)是就近依賴,即哪里用到依賴就在哪里引入,即用即返回(同步概念)
define(function (require, exports, module) {
// 通過(guò)require引入依賴
var $ = require('jquery');
var Spinning = require('./spinning')
});
CommonJs規(guī)范通過(guò)module.exports定義,前端瀏覽器并不支持,推薦在后端nodeJs中使用
exports.area = function (r) {
return Math.PI * r * r;
};
exports.circumference = function (r){
return 2 * Math.PI * r;
};
ES6新增特性 export/import