我正在尝试为每个需要使用创建一个唯一的需求,文件1,2,300等等都需要一个名为test.js的文件。然后可以在一个文件中禁用它,但它的变量在其他文件中不受影响。
File1.js
const test = require("./test.js"); // NOTE enabled boolean in test is default = true test.enabled = false; // or test.disable(); test.sayHello(); // will output nothing as enabled = false
File2.js
const test = require("./test.js"); test.sayHello(); // Should output hello but it as file1 set enabled to false it dosnt
test.js实现此功能的目的是什么?
我目前必须通过module.exports函数中的参数执行此操作,这不是理想的。例如,disable将测试函数的直接返回,然后是启用/禁用的第二个可选参数。哪个是...... ...
由于
d
答案 0 :(得分:3)
即使您可以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'