nodejs 模块引用的单例性
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第三方模块时,是以引用传递的方式引入的,彼此共享模块的变量值
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~