Node.js 模块.导出和局部变量
我正在尝试创建一个小型web应用程序,我对module.exports有一个问题 支持我有一个文件Node.js 模块.导出和局部变量,node.js,Node.js,我正在尝试创建一个小型web应用程序,我对module.exports有一个问题 支持我有一个文件counter.js var counter = 0; module.exports = { add: function() { counter++; }, get: function() { return counter; } } 我尝试在几个文件中引用这个文件,假设app.js和count.js都位于同一个目录中 // fro
counter.js
var counter = 0;
module.exports = {
add: function() {
counter++;
},
get: function() {
return counter;
}
}
我尝试在几个文件中引用这个文件,假设app.js
和count.js
都位于同一个目录中
// from app.js
var a = require('./counter.js');
a.add();
console.log(a.get()); // the value is 1
// from count.js
var b = require('./counter.js');
b.add();
console.log(b.get()); // the value is 2?
值是1还是2 如果您的意思是(例如)app.js
将通过require()
包含count.js
,或者app.js
和count.js
都将通过require()
包含在第三个文件中,那么它们都共享一个实例,答案是2
如果您的意思是运行node app.js
然后运行node count.js
,那么在这种情况下,每个文件都会获得它自己的所需模块实例,因此它将是1
,如果您的意思是(例如)app.js
将通过require()包含count.js
或者app.js
和count.js
都将通过require()
包含在第三个文件中,那么它们都共享一个实例,答案是2
如果您的意思是运行node app.js
然后运行node count.js
,那么在这种情况下,每个文件都会获得所需模块的自身实例,因此它将是1
,结果将是2
从nodejs.orgdoc
模块在第一次加载后被缓存。这意味着(除其他外)每个对require('foo')的调用都将得到返回的完全相同的对象,如果它将解析为相同的文件
多次调用require('foo')可能不会导致多次执行模块代码。这是一个重要特征。使用它,可以返回“部分完成”的对象,从而允许加载可传递的依赖项,即使它们会导致循环。结果将是2
从nodejs.orgdoc
模块在第一次加载后被缓存。这意味着(除其他外)每个对require('foo')的调用都将得到返回的完全相同的对象,如果它将解析为相同的文件
多次调用require('foo')可能不会导致多次执行模块代码。这是一个重要特征。使用它,可以返回“部分完成”的对象,从而允许加载可传递的依赖项,即使它们会导致循环。有没有办法让变量计数器由两个文件共享?我的意思是
app.js
和count.js
是两个独立的文件,包括counter.js
通过require()
有没有办法让变量计数器由两个文件共享?我的意思是app.js
和count.js
是两个独立的文件,包括counter.js
通过require()