在多个文件node.js之间共享和修改变量

回答:

var count = 1;

// psuedocode

// if (words typed begins with @add)

require('./add.js');

// if (words typed begins with @remove)

require('./remove.js');

// if (words typed begins with @total)

require('./total.js');

module.exports.count = count;

回答:

var count = require('./main.js').count;

console.log(count);

回答:

var count = require('./main.js').count;

count += 10;

console.log(count);

回答:

var count = require('./main.js').count;

count -= 10;

console.log(count);

回答:

 1

11

-9

回答:

我有一个应用程序(irc bot),我想添加一个功能,使偷看者可以执行@add

1或@remove1。我有一个main.js,然后根据所说的触发器需要不同的文件。因此,add将触发add.js文件,然后将需要require(’main.js’)并添加10(为简化起见,为10,它将解析该数字并使用该数字)。我遇到的问题是有人去做@remove。它需要(’main.js’)并从1中减去10,得出-9。然后@total会输出1。

我已经对module.exports进行了相当不错的搜索,但没有遇到上面列出的示例。

文档中没有包含任何与我想要做的事情相似的示例;而这些问题1,2我的理解-但任何用处我不是-我明白是怎么被说有。

回答:

我想让@add和@remove都操作相同的变量(count),并让@total返回考虑到@add和@removes的总数。我是否使用了module.exports错误?还是有一种共享变量的通用方法,其中一个文件能够修改module.exports的内容并将结果返回给main.js文件?

回答:

您的问题是,当您这样做时var count =

require('./main.js').count;,会得到该编号的副本,而不是参考编号。更改count不会更改“源”。

但是,您应该具有文件导出功能。要求文件只会在第一次运行,但是之后将被缓存并且不会重新运行。查看文件

建议1:

// main.js

var count = 1;

var add = require('./add.js');

count = add(count);

// add.js

module.exports = function add(count) {

return count+10;

}

#2:

var count = 1;

var add = function() {

count += 10;

}

add();

#3:我个人会创建一个计数器模块(这是一个实例,但是您可以轻松地使其成为“类”):

// main.js

var counter = require('./counter.js');

counter.add();

console.log(counter.count);

// counter.js

var Counter = module.exports = {

count: 1,

add: function() {

Counter.count += 10;

},

remove: function() {

Counter.count += 10;

}

}

以上是 在多个文件node.js之间共享和修改变量 的全部内容, 来源链接: utcz.com/qa/423343.html

回到顶部