CommonJS 是以在浏览器环境之外构建 JavaScript 生态系统为目标而产生的项目,比如在服务器和桌面环境中。

这个项目最开始是由 Mozilla 的工程师 Kevin Dangoor 在2009年1月创建的,当时的名字是 ServerJS。

我在这里描述的并不是一个技术问题,而是一件重大的事情,让大家走到一起来做决定,迈出第一步,来建立一个更大更酷的东西。 —— Kevin Dangoor's What Server Side JavaScript needs

2009年8月,这个项目改名为 CommonJS,以显示其 API 的更广泛实用性。CommonJS 是一套规范,它的创建和核准是开放的。这个规范已经有很多版本和具体实现。CommonJS 并不是属于 ECMAScript TC39 小组的工作,但 TC39 中的一些成员参与 CommonJS 的制定。2013年5月,Node.js 的包管理器 NPM 的作者 Isaac Z. Schlueter 说 CommonJS 已经过时,Node.js 的内核开发者已经废弃了该规范

CommonJS 规范是为了解决 JavaScript 的作用域问题而定义的模块形式,可以使每个模块它自身的命名空间中执行。该规范的主要内容是,模块必须通过 module.exports 导出对外的变量或接口,通过 require() 来导入其他模块的输出到当前模块作用域中。

一个直观的例子:

// 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/CommonJS

最新文章

  1. Angular2 Hello World 之 RC6
  2. 【Win 10应用开发】AdaptiveTrigger在自定义控件中是可以触发的
  3. filter : progid:DXImageTransform.Microsoft.AlphaImageLoader ( enabled=bEnabled , sizingMethod=sSize , src=sURL )
  4. 给大家推荐PYTHON网站
  5. jQuery – 3.JQuery的Dom操作
  6. CSS的样式合并与模块化
  7. SPL标准库常用的数据结构
  8. Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_100_CI_AS" in the equal to operation.
  9. Java中字符流与字节流的区别
  10. usaco 土地并购 && hdu 玩具装箱
  11. Qt 学习之路 2(79):QML 组件
  12. JSF和Struts的区别概述
  13. Java界面编程-建立一个可以画出图形的简单框架
  14. Zookeeper启动时报8080端口被占用
  15. 学习MACD指标
  16. Spinner之下拉多选,监听ID后显示不同Frgment页面
  17. js中子页面父页面方法 变量相互调用(转)
  18. Android 解决启动页白屏或者黑屏的问题
  19. root_objectlist, root_object, container_objectlist, container_object 之间的关系。
  20. Flume原理解析【转】

热门文章

  1. php一些常用功能封装
  2. 20145210姚思羽 《网络对抗技术》 Web安全基础实践
  3. [Python]基于CNN的MNIST手写数字识别
  4. 一步一步粗谈linux文件系统(三)----超级块(superblock)【转】
  5. Service Meth and SideCar
  6. 【P2774】方格取数问题(贪心+最大流,洛谷)
  7. MapReduce-shuffle过程详解
  8. review38
  9. review08
  10. SQL Server 性能优化之RML Utilities:快速入门(Quick Start)(1)