使用node / express.js的模块中的全局变量

时间:2019-12-26 02:47:53

标签: javascript node.js express

我试图避免在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

}

以这种方式使用模块是否可以接受?如果不是,那么在这里什么是更好的做法?

谢谢

1 个答案:

答案 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