没有缓存/持久性的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 它 dosnttest.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最好的方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
NodeJS 如何在没有 WebSockets 的情况下处理持久连接?