【问题标题】:global variables in modules using node / express.js使用 node / express.js 的模块中的全局变量
【发布时间】:2019-12-26 02:47:53
【问题描述】:

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

}

以这种方式使用模块是否可以接受?如果不是,这里会被认为是更好的做法吗?

谢谢

【问题讨论】:

标签: javascript node.js express


【解决方案1】:

每个模块都有自己的范围,但您可以将任何变量、函数等导入或导出到其他模块并在其中使用它们,例如更改变量的值,但值会在您导入的模块中更改,而不是在 main

在下面运行代码并 我认为它可以按您的意愿工作。

//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

【讨论】:

  • 感谢您的信息。澄清一下,上面的 client.js 还是在服务器端不是吗?据我了解,“require”在客户端公共 js 模块上不可用。
  • 我有一个错误,实际上我之前给你的回答中的代码中module.js的名称是app.js,我指定module.js是因为我想要,你理解更好,请替换
  • 请将 app.js 替换为 module.js,反之亦然
  • 这些模块是分开的,它们的名字是需要的,实际上我创建它们是为了向你展示模块如何一起处理
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-10
  • 2016-10-20
  • 2016-09-15
  • 2018-06-13
  • 2015-03-07
  • 2014-04-30
  • 2017-06-02
相关资源
最近更新 更多