1.测试项目结构如下:
2运行:
node first.js
3结果如下:
4代码:
first.js
console.info("first.js require module");
var mod = require('./module');
console.info("first.js show module::————");
console.info(mod);
console.info("first.js require second before add var2");
var second = require('./second');
console.info("first.js add var2");
mod.var2 = 'var2';
console.info("first.js show module::————");
console.info(mod);
console.info("first.js require second.js");
var second = require('./second');
console.info("first.js run exported second");
second();
console.info("first.js show moddule::————");
console.info(mod);
second.js:
var mod2 = require('./module');
console.info("second.js require module,and module in second is::————");
console.info(mod2);
exports = module.exports = function () {
console.info("second show module in exports::————");
console.info(mod2);
console.info('second add var3');
mod2.var3 = 'var3';
};
module/index.js:
console.info('module.exports var1');
exports = module.exports= {
var1 : 'var1'
};
//以模块默认入口而非index文件引入时对外不共享var1
// exports = {
// var1 : 'var1'
// };
5.总结
不同文件require第三方模块时,是以引用传递的方式引入的,彼此共享模块的变量值