生活随笔
收集整理的這篇文章主要介紹了
CMD、AMD、commonJs 规范的写法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
比較好的文章: http://www.jianshu.com/p/d67b...
AMD 是 RequireJS 在推廣過程中對模塊定義的規范化產出。
CMD 是 SeaJS 在推廣過程中對模塊定義的規范化產出。
//AMD 規范
/*** define(id?, dependencies?, factory); id 和 dependencies 是可選的。** define(['dep1', 'dep2'], function(dep1, dep2){* return funciton() {};* });*/define(['./a', './b'], function(a, b) { // 依賴必須一開始就寫好a.doSomething()// 此處略去 100 行b.doSomething()...}) define(function () {var exports = {};exprots.sayHello = function () {alert('Hello from module:' + module.id);};return exports;
});//CMD 規范
/*** define(function(require, exports, module){* return funciton() {};* });* require、exprots 和module 通過形參傳遞給模塊,在需要依賴模塊是,隨時調用require() 引入即可*/define(function(require, exports, module) { var a = require('./a') a.doSomething() // 此處略去 100 行 var b = require('./b') // 依賴可以就近書寫 b.doSomething() // ...
})//commonJs 規范
/*** 在模塊中,通過require()方法來引入外部的模塊。* 上下文提供了exports 對象用于到處當前模塊的方法和變量, 并且它是唯一導出的出口。* 在模塊中還存在一個module對象,它代表模塊自身,而exports是module的屬性。* math.js*/
exports.math = function () {var sum = 0, i = 0, args = arguments, len = args.length;while(i < 1) {sum += args[i];}return sum;
};//另外一個文件
var math = require('math');
exports.increment = function (val) {return math.add(val, 1);
};//兼容Node、AMD、CMD以及瀏覽器常見的瀏覽器環境
(function(name, definition){//檢測上下文環境是否為AMD 或 CMDvar hasDefine = typeof define === 'function',//檢查上下文環境是否為NodehasExports = typeof module !== 'undefined' && module.exports;if(hasDefine) {//AMD或CMD環境define(definition);} else if (hasExports) {//定義為普通Node 模塊module.exports == definition();} else {//將模塊的執行結果掛在window變量中,在瀏覽器中this指向window對象this[name] = definition();}
}('hello', function () {var hello = function () {};return hello;
}));
總結
以上是生活随笔為你收集整理的CMD、AMD、commonJs 规范的写法的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。