Как изменить оболочку модуля NodeJS?
Функция обертки модуля: внутри NodeJS не запускает наш код напрямую, он обертывает весь код внутри функции перед выполнением. Эта функция называется функцией оболочки модуля. Обратитесь к https://nodejs.org/api/modules.html#modules_the_module_wrapper за официальной документацией.
Перед тем, как код модуля будет выполнен, NodeJS заключает его в оболочку функции, которая имеет следующую структуру:
(функция (экспорт, требование, модуль, __filename, __dirname) { // код модуля });
Использование функции оболочки модуля в NodeJS:
- Переменные верхнего уровня, объявленные с помощью var , const или let, относятся к модулю, а не к глобальному объекту.
- Он предоставляет некоторые глобальные переменные, специфичные для модуля, например:
- Модуль и объект экспорта, который можно использовать для экспорта значений из модуля.
- Такие переменные, как __filename и __dirname, сообщают нам абсолютное имя файла модуля и путь к его каталогу.
Изменение функции оболочки модуля: учтите, что у нас есть два файла: main.js и module.js. В main.js мы перезаписываем функцию Module.wrap, чтобы получить console.log ('modifedMWF'); каждый раз, когда требуется модуль. Теперь, если нам потребуется module.js, он будет содержать сообщение, подтверждающее успешность наших изменений.
- Это первый файл, который будет вызывать второй.
main.js
var
Module = require(
"module"
);
(
function
(moduleWrapCopy) {
Module.wrap =
function
(script) {
script =
"console.log('modifiedMWF');"
+ script;
return
moduleWrapCopy(script);
};
})(Module.wrap);
require(
"./module.js"
);
- Это второй файл.
module.js
console.log(
"Hello Geeks from module.js!"
);
Вывод: Запустив main.js, мы получаем следующий вывод, подтверждающий успешное изменение функции Module Wrapper.
узел main.js