Mean Stack - 使用 "Globals" 模块会导致网络应用程序出现问题吗?

Mean Stack - can using a "Globals" module cause issues when werving a web app?

我有一个变量(构造的文件名),我需要从一个文件的 API 中获取该变量,以便将其作为变量存储在另一个文件中。

根据我的代码设置方式,(我能想到的)没有真正的方法可以在不使用全局变量的情况下将这个变量从一个文件获取到另一个文件。我一直在寻找一些不同的方法并决定创建一个全局模块 (globals.js):

var globals = {
    'new_img': ''
}

module.exports = globals;

我写过:

var globals        = require('./public/js/globals');

在我的 server.js 和我的 routes.js 中,以便我的所有 API 和控制器都可以访问此模块。

当我为这个 Web 应用程序提供服务并且多个人拥有自己的网页实例时,他们是否都使用相同的全局模块?这不是我想要的效果。有什么更好的方法来解决这个问题?

是的,他们将使用相同的实例。

该模式是单例模式,您正在导出并使全局成为一个变量,内存中的同一位置将对整个应用程序可见。

在调试器的帮助下,您可以深入分析 require 代码并看到 Nodejs 每次都会缓存该调用的结果和 return 相同的实例。

NodeJS 源代码:

如果您想要的结果是拥有不同的实例,您可以浅克隆该对象。

var globals  = _.extend({}, require('./public/js/globals')); //ecma5 + underscore.js

var globals = Object.assign({}, require('./public/js/globals')); //ecma6