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

posted @ 2017-02-09 19:00  小天儿  阅读(1277)  评论(0)    收藏  举报