CommonJS 規範

CommonJS 是以在瀏覽器環境以外構建 JavaScript 生態系統爲目標而產生的項目,好比在服務器和桌面環境中。javascript

這個項目最開始是由 Mozilla 的工程師 Kevin Dangoor 在2009年1月建立的,當時的名字是 ServerJS。java

我在這裏描述的並非一個技術問題,而是一件重大的事情,讓你們走到一塊兒來作決定,邁出第一步,來創建一個更大更酷的東西。 —— Kevin Dangoor's What Server Side JavaScript needsnode

2009年8月,這個項目更名爲 CommonJS,以顯示其 API 的更普遍實用性。CommonJS 是一套規範,它的建立和核準是開放的。這個規範已經有不少版本和具體實現。CommonJS 並非屬於 ECMAScript TC39 小組的工做,但 TC39 中的一些成員參與 CommonJS 的制定。2013年5月,Node.js 的包管理器 NPM 的做者 Isaac Z. Schlueter 說 CommonJS 已通過時,Node.js 的內核開發者已經廢棄了該規範git

CommonJS 規範是爲了解決 JavaScript 的做用域問題而定義的模塊形式,可使每一個模塊它自身的命名空間中執行。該規範的主要內容是,模塊必須經過 module.exports 導出對外的變量或接口,經過 require() 來導入其餘模塊的輸出到當前模塊做用域中。github

一個直觀的例子:瀏覽器

// moduleA.js module.exports = function( value ){ return value * 2; } 
// moduleB.js var multiplyBy2 = require('./moduleA'); var result = multiplyBy2(4); 

CommonJS 是同步加載模塊,但其實也有瀏覽器端的實現,其原理是現將全部模塊都定義好並經過 id 索引,這樣就能夠方便的在瀏覽器環境中解析了,能夠參考 require1k 和 tiny-browser-require 的源碼來理解其解析(resolve)的過程。服務器

更多關於 CommonJS 規範的內容請查看 http://wiki.commonjs.org/wiki/CommonJSide

相關文章
相關標籤/搜索