我试图避免在server.js文件中使用全局变量,但需要各种功能可以访问和写入的变量。但是,我不确定范围是否与客户端相同(因为它看起来更“隐藏”)。我在某处读到模块具有自己的作用域,但是如果我在其中放置变量并且它们可以在server.js中访问,那么与全局作用域不是同一回事吗?例如:
//module.js
var config = [
{var1: 1},
{var2: 2},
{var3: 3}
]
module.exports = {
config
};
//server.js
const { config } = require("./config.js")
function function1() {
var a = config[0].var1
bar b = config[0].var2
config[0].var3 = a+b // changing var3 value in module
}
以这种方式使用模块是否可以接受?如果不是,那么在这里什么是更好的做法?
谢谢
答案 0 :(得分:1)
每个模块都有自己的作用域,但是您可以将任何变量,函数等导入或导出到其他模块,并在其中使用它们,例如更改变量的值,但是该值将在您导入的模块中更改,而不是在主< / p>
下面的运行代码 我认为它可以如您所愿。
//module.js
var config = [
{var1: 1},
{var2: 2},
{var3: 5}
]
console.log(config[2].var3) //5
module.exports = config
//server.js
const config = require("./app.js")
function function1() {
var a = config[0].var1
var b = config[1].var2
config[2].var3 = a+b // changing var3 value in module
console.log(config[2].var3)
}
function1() //3
console.log(config[2].var3)//3
//client.js
const config = require("./app.js")
console.log(config[2].var3) //5