node.js - NodeJS 中的全局变量与 require.cache

标签 node.js global-variables require

我知道在 Node 中不鼓励使用 global 变量,但假设我需要全局存储一些数据,这是一个更糟糕的方法:

  1. 使用 global

  2. 使用 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/

相关文章:

c++ - 编辑全局变量时减少重新编译

javascript - 使用 Node.js 从不同的 js 文件引用构造函数

javascript - 如何使用 sequelize 和 sqlite 验证 int 和 boolean

php - 如何在函数php中向数组添加元素

c - malloc 的全局数组

javascript - typescript中导入模块的方式有哪些以及require js在模块加载中的作用是什么

PHP - 什么更快,memcache 还是 require?

multithreading - Nodejs 利用所有 CPU 上的所有内核

node.js - nodejs mongodb es6-promises 获取带有外键数据的列表

javascript - 用 Promises 返回的数据替换出现的文本