#javascript #node.js
#javascript #node.js
Вопрос:
Вот как я динамически добавляю функцию к объекту window во время выполнения:
(function (myPluginModuleLib, $, undefined) {
myPluginModuleLib.myModuleMethod = (varArgs) => {
console.log('Dynamic Call : ' varArgs);
};
}(window.myPluginModuleLib = window.myPluginModuleLib || {}, jQuery));
Тогда я могу глобально вызвать ее в любое время :
window.myPluginModuleLib.myModuleMethod('HELLO WORLD PARAMS!');
Есть ли аналогичный способ сделать это в NodeJS? Я хотел бы добавить функцию в память. Например, в основном app.js , чтобы я мог вызывать его по требованию, вместо того, чтобы всегда создавать его из строки:
let myModuleMethodString = 'var myModuleMethod = (varArgs) => { console.log("Dynamic Call : " varArgs) }';
myModuleMethodString = myModuleMethodString.slice(myModuleMethodString.indexOf("{") 1, myModuleMethodString.lastIndexOf("}"));
let myModuleMethod = new Function("varArgs", 'console.log("Dynamic Call : " varArgs)');
try {
myModuleMethod('HELLO WORLD PARAMS!');
} catch (error) {
console.log(error);
}
Заранее благодарю вас всех.
Комментарии:
1. Как вы думаете, почему вы не можете сделать это аналогично тому, как вы делаете это в браузере? Это все еще JavaScript….
2. В браузере я прикрепляю ее к объекту window. Как мне это сделать в узле, на стороне сервера?
3. @Program-Me-Rev, вы не можете подключиться к окну, которое запущено в вашем браузере (клиенте) из Node.js код, запущенный на вашем сервере. Это должно быть сделано в клиентском коде.
Ответ №1:
Если вы хотите придерживаться этого решения, то вы можете использовать глобальное пространство имен в Node JS, что похоже на окно в браузерах, хотя не рекомендуется использовать глобальные переменные.
Пример:
global.myPluginModuleLib = {
myModuleMethod : (varArgs) => {
console.log('Dynamic Call : ' varArgs);
}
};
global.myPluginModuleLib.myModuleMethod('HELLO WORLD PARAMS!');
Ответ №2:
короткий ответ: вы можете просто использовать «глобальный» вместо «окна». Дополнительная информация здесь: https://stackabuse.com/using-global-variables-in-node-js /
Длинный ответ: это не то, что вы когда-либо должны делать в Node.js . Это просто загрязняет глобальный контекст. Все ваши функции всегда должны определяться в контексте определенного модуля