我知道在 Node 中不鼓励使用 global
变量,但假设我需要全局存储一些数据,这是一个更糟糕的方法:
使用 global
使用 require cache直接存储一个对象,即
require.cache["myGlobalVar"] == {};
我怀疑选项 2 更糟,因为 require 缓存旨在用于模块。
更多详情: 我考虑过使用 require("myLibrary").myGlobalVar 但这需要所有调用它的文件都可以访问 myLibrary,这在实践中可能是不可能的。我正在制作一个代码覆盖工具,因此我可以期望用户在他们的开发/测试模块中安装“myLibrary”,但不一定在他们的 src node_modules 目录中,检测代码文件将引用该目录。
最佳答案
为什么不创建一个内存缓存,然后所有其他代码都可以引用它?
var memoryCache = module.exports = function () {
var cache = {};
return {
get: function (key) { return cache[key]; },
set: function (key, val) { cache[key] = val; }
}
}
然后您可以通过要求从任何地方使用缓存。
var cache = require('../cache/memoryCache')();
cache.set('1234', 'value I want to share');
cache.get('1234'); // 'value I want to share'
关于node.js - NodeJS 中的全局变量与 require.cache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12957821/