没有缓存/持久性的nodejs最好的方法是啥?

Posted

技术标签:

【中文标题】没有缓存/持久性的nodejs最好的方法是啥?【英文标题】:whats the best way to do nodejs require with no caching / persistence没有缓存/持久性的nodejs最好的方法是什么? 【发布时间】:2018-11-19 22:14:03 【问题描述】:

我正在尝试创建一个对每个要求使用都是唯一的要求,文件 1、2、300 等都有一个名为 test.js 的文件的要求。然后可以在一个文件中禁用此功能,但在其他文件中不会更改它的变量。

文件1.js

const test = require("./test.js"); // 注意在测试中启用的布尔值是默认值 = true test.enabled = 假; // 或 test.disable(); test.sayHello(); // 将不输出任何内容,因为 enabled = false

文件2.js

const test = require("./test.js"); test.sayHello(); // 应该输出 hello 但它作为 file1 设置为 false 它 dosnt

test.js 应该是什么样子才能实现这个功能?

我目前不得不通过 module.exports 函数中的参数来执行此操作,这并不理想。例如,禁用将是测试函数的直接返回,然后是启用/禁用的第二个可选参数。哪个是咩...

谢谢

D

【问题讨论】:

【参考方案1】:

尽管您可以 clear require 缓存,但我认为,对于您的特定情况,这是一种不好的做法。

相反,您的 require 调用应返回 class,然后您将在每个文件上使用该类的新实例,并在需要时禁用/启用该实例。

test.js

class Test 

    disable() 
        this.disable = true;
    

    sayHello() 
        if(this.disable)
            return false;

        console.log('hello')
    



module.exports = Test;

index.js

const Test = require('./test.js');
const test = new Test();
test.disable();
test.sayHello(); // nothing is printed

const otherTest = new Test();
otherTest.sayHello(); // 'hello'

【讨论】:

忘记了返回类/函数本身而不是它的实例化... doh... 小事呃... 谢谢你的回答:) 确实,这些小东西 :),很高兴为您提供帮助!

以上是关于没有缓存/持久性的nodejs最好的方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Delphi对象持久化,最好的方法是啥

在mysql中使用持久连接的目的和好处是啥?

持久化字符串以检索文本跨度的最有效方法是啥?

NodeJS 如何在没有 WebSockets 的情况下处理持久连接?

在 .NET 中序列化复杂对象层以进行缓存的最简单方法是啥?

android上持久键值存储的最佳机制是啥(具有大值)