CommonJS 规范里的模块系统.. http://wiki.commonjs.org/wiki/Modules/1.1.1 math.js
exports.add = function() {
var sum = 0, i = 0, args = arguments, l = args.length;
while (i < l) {
sum += args[i++];
}
return sum;
};
increment.js
var add = require('math').add;
exports.increment = function(val) {
return add(val, 1);
};
program.js
var inc = require('increment').increment;
var a = 1;
inc(a); // 2
module.id == "program";
先不说浏览器上边,因为异步,RequireJS 指出 CommonJS 问题不少..
单说服务端编程的话,感觉用这样的写法比较少见啊,
通常的 require
或者 import
, 加载模块后模块中函数就直接到代码作用域当中了,
而 CommonJS 里引入后仅暴露一个对象,至于其他 JS 方言会额外提供语法直接引入方法,
甚至 ES6 规范里的 import
也和 CommonJS 不同..
个人是感觉上手挺简单的... 而且单 Node 社区用,也没有明显的问题报过, 但总的感觉有点怪异,为什么其他语言都采用引用后直接暴露方法的方式呢?