JavaScript的模塊規(guī)范有:1、CommonJS規(guī)范;2、AMD(異步模塊定義)規(guī)范;3、CMD(公共模塊定義)規(guī)范;4、UMD規(guī)范(AMD和CommonJS的糅合)。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
常見的JavaScript 模塊化規(guī)范有3種,CommonJS、AMD(異步模塊定義)、CMD(公共模塊定義)
服務(wù)端 :NodeJS 服務(wù):CommonJS規(guī)范,新版本的Node也可以啟用ES6 Module功能
瀏覽器端:主要使用的是AMD規(guī)范和CMD規(guī)范,現(xiàn)在已經(jīng)逐步被ES6 Module取代
模塊化規(guī)范
1. CommonJS規(guī)范
(1) 每一個(gè)文件都是一個(gè)模塊,每一個(gè)模塊都有一個(gè)獨(dú)立的作用域,文件內(nèi)的變量,函數(shù)都是私有的,其他文件不可使用(除非賦值到 global上) (2)每個(gè)模塊內(nèi)部,module變量代表當(dāng)前模塊 (3)每個(gè)文件對(duì)外的接口是 module.exports 屬性 (4) require用于引用其他模塊,實(shí)際獲得的是其他模塊的module.exports這個(gè)屬性
2. AMD(Asynchromous Module Definition – 異步模塊定義)
AMD 是 RequireJS 在推廣過(guò)程中對(duì)模塊定義的規(guī)范化產(chǎn)出
使用
定義模塊 define(id?, dependencies?, factory) 加載模塊 require([module], callback)
3. CMD(Common Module Definition – 公共模塊定義)
CMD 是 SeaJS 在推廣過(guò)程中對(duì)模塊定義的規(guī)范化產(chǎn)出
使用
定義模塊 define(factory) 加載模塊 require(id)
4. UMD(AMD和CommonJS的糅合)
UMD先判斷是否支持Node.js的模塊(exports)是否存在,存在則使用Node.js模塊模式。
在判斷是否支持AMD(define是否存在),存在則使用AMD方式加載模塊。
(function (window, factory) { if (typeof exports === 'object') { module.exports = factory(); } else if (typeof define === 'function' && define.amd) { define(factory); } else { window.eventUtil = factory(); } })(this, function () { //module ... });
【