CommonJS模块中的Javascript,module.exports

时间:2017-08-17 07:06:12

标签: javascript module require commonjs

在Eloquent Javascript(http://eloquentjavascript.net/10_modules.html)中有require()的解释和实现:

  

...问题是模块无法直接导出   导出对象以外的值,例如函数。对于   例如,模块可能只想导出的构造函数   它定义的对象类型。现在,因为需要它不能这样做   始终使用它创建的导出对象作为导出值。

     

传统的解决方案是提供另一个模块   变量,module,是一个具有属性导出的对象。这个   property最初指向require创建的空对象但是   可以用其他值覆盖以导出某些内容   其他

function require(name) {
  if (name in require.cache)
    return require.cache[name];

  var code = new Function("exports, module", readFile(name));
  var exports = {}, module = {exports: exports};
  code(exports, module);

  require.cache[name] = module.exports;
  return module.exports;
}
require.cache = Object.create(null);

那么,有人可以解释一下,module.exports是一个解决方案吗?为什么我不能覆盖出口?

0 个答案:

没有答案