首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在多个文件之间共享和修改变量node.js

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

Stack Overflow用户
提问于 2013-06-15 12:14:35
回答 2查看 72.6K关注 0票数 48

main.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;

total.js

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

add.js

var count = require('./main.js').count;
count += 10;
console.log(count);

remove.js

var count = require('./main.js').count;
count -= 10;
console.log(count);

console.log

 1
 11
 -9

背景:

我有一个应用程序(irc bot),我想添加一个功能,让peeps可以做@add 1或@remove 1。我有一个main.js,它需要不同的文件,这取决于所说的触发器。所以add会触发add.js文件,然后需要(‘main.js’)并加上10 (为了简化,它实际上会解析这个数字并使用这个数字)。我遇到的问题是,当有人走来走去,做“删除”的时候。它需要(‘main.js’),并从1中减去10,得到-9。执行@total将输出1。

我已经对module.exports进行了相当好的搜索,但还没有遇到像上面列出的这样的示例。The docs没有包含任何接近我想要做的事情的例子;这些问题12我理解--但对我没有任何用处--因为我理解这里所说的话。

问题:

我想让@add和@remove操作相同的变量( count ),并让@total返回计入@add和@removes的总数。我是否错误地使用了module.exports;或者是否存在共享变量的通用方法,即一个文件可以修改module.exports的内容并将结果返回到main.js文件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-15 12:26:47

你的问题是,当你执行var count = require('./main.js').count;时,你得到的是该数字的一个副本,而不是一个引用。更改count不会更改“源”。

但是,您应该具有文件导出功能。需要一个文件只会在第一次运行它,但之后它会被缓存,不会重新运行。see docs

建议#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;
    }
}
票数 62
EN

Stack Overflow用户

发布于 2020-07-05 05:07:21

我知道我回答这个问题有点晚了,只有7年!

您可以简单地使用全局变量:

global.myVar = 'my-val';
console.log(myVar); // returns 'my-val'
// from here on it's accessable to all modules by just the variable name

using-global-variables-in-node-js

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17120117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档