我正在尝试在浏览器和 nodejs 服务器之间共享一些 js 代码。为此,我只使用这些做法:http ://caolanmcmahon.com/posts/writing_for_node_and_the_browser/
问题是当我想导出一个函数而不是一个对象时。在节点中,您可以执行以下操作:
var Constructor = function(){/*code*/};
module.exports = Constructor;
这样当使用 require 时,您可以执行以下操作:
var Constructor = require('module.js');
var oInstance = new Constructor();
问题是当我尝试引用模块中的 module.exports 对象并使用该引用用我的函数覆盖它时。在模块中它将是:
var Constructor = function(){/*code*/};
var reference = module.exports;
reference = Constructor;
为什么这不起作用?我不想使用简单的解决方案在干净的代码中插入 if ,但我想了解为什么它是非法的,即使 reference===module.exports 是真的。
谢谢