Я пытаюсь создать требование, которое уникально для каждого из них требует использования, файл 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 будет проверять прямой возврат функции, а затем второй необязательный аргумент для включения/выключения. Что такое meh...
Спасибо
D
Несмотря на то, что вы можете очистить 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'