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

相关文章
相关标签/搜索