expressjs中的全局对象

时间:2018-04-07 09:48:39

标签: javascript express

我正在建立一个学校管理系统。当教师发送帖子请求时,在我的后端我在路线中创建一个全局对象。因此,当多个教师访问服务器时,将创建多个全局对象....或者每个教师访问同一个对象?(它是同一个对象吗?)

1 个答案:

答案 0 :(得分:0)

我真的希望通过在路线中创建一个全局对象,这意味着你要创建一个属性 -

1。 global对象本身 - global.myGlobalObj = { some-var: 'some-val' }

2。 process对象 - process.myGlobalObj = { some-var: 'some-val' }

3。 express-app - 可能类似于app.set('myGlobalObj', someOb)

或者可能在某些其他全球对象上。在这种情况下,每个请求 - 响应周期都将获得对同一对象的访问权。

但是,对于您打算开发的任何类型的系统,严格不建议使用此做法。主要原因是 -

  1. 很不稳定。一旦您的应用程序崩溃,取决于您的全局对象的当前值的每个request都不会正确完成,因为该值已经因崩溃而丢失/重置。

  2. 它不遵守REST架构的原则,即每个请求都必须是无状态的,并且应该包含足以成功完成请求所需的数据/参数。

  3. Globals是面向对象编程和功能编程范式存在的原因之一。全局变量使您的应用程序更容易受到攻击,更难理解且难以测试。

  4. <强>解决方案

    如果与变量访问相关的性能无关紧要,只需将变量存储在支持索引的数据库中,并在每个请求中访问它,否则使用in-memory database,例如Redis。< / p>