什么是CommonJS


本文作者: jsweibo

本文链接: https://jsweibo.github.io/2019/07/15/%E4%BB%80%E4%B9%88%E6%98%AFCommonJS/

摘要

本文主要讲述了:

  1. 什么是 CommonJS
  2. 示例

正文

什么是 CommonJS

JavaScript 一直被局限在浏览器端,但人们希望它能被用于更大的场景。

于是,Mozilla 工程师 Kevin Dangoor 在 2009 年 1 月发起了 ServerJS 项目。该项目基于 JavaScript,通过新增 API,致力于在浏览器端之外(例如:服务器端)为 JavaScript 构建模块生态系统。

在 ServerJS 项目开展得如火如荼之际,项目组又将眼光重新聚焦回浏览器端,期望浏览器端也能享受到 ServerJS 项目带来的红利,从而一统浏览器端和服务器端。

2009 年 8 月,基于更大的野心,为了凸显自身的普适性,项目组更名为 CommonJS(简称 CJS)并沿用至今。

需要注意的是:CommonJS 项目组本身只负责制定 CommonJS 规范,并不负责具体的实现。CommonJS 规范目前仍在进一步完善,并没有完工。

nodejs 实现了部分 CommonJS 规范。

2013 年 5 月,npm 的作者 Isaac Z. Schlueter 宣称 nodejs 正在放弃遵循 CommonJS 规范。

示例

此示例可以运行在 nodejs 上。

math.js

1
2
3
4
5
6
7
8
9
10
exports.add = function () {
var sum = 0,
i = 0,
args = arguments,
l = args.length;
while (i < l) {
sum += args[i++];
}
return sum;
};

increment.js

1
2
3
4
var add = require('./math').add;
exports.increment = function (val) {
return add(val, 1);
};

program.js

1
2
3
4
5
var inc = require('./increment').increment;
var a = 1;

// 输出:2
inc(a);
  1. program.js作为入口,引用了increment.js模块中的increment(),并将1传递给了increment()
  2. increment.js引用了 math.js 模块中的add(),并定义了一个模块,这个模块拥有increment()increment()val1一起传递给了add()
  3. math.js定义了一个模块,这个模块拥有add()add()用于将所有参数累计求和。

参考资料

本文作者: jsweibo

本文链接: https://jsweibo.github.io/2019/07/15/%E4%BB%80%E4%B9%88%E6%98%AFCommonJS/


本文对你有帮助?请支持我


支付宝
微信