Función contenedora del módulo: bajo el capó, NodeJS no ejecuta nuestro código directamente, envuelve todo el código dentro de una función antes de la ejecución. Esta función se denomina función contenedora de módulo. Consulte https://nodejs.org/api/modules.html#modules_the_module_wrapper para obtener documentación oficial.
Antes de que se ejecute el código de un módulo, NodeJS lo envuelve con una función contenedora que tiene la siguiente estructura:
(function (exports, require, module, __filename, __dirname) { //module code });
Uso de la función de contenedor de módulos en NodeJS:
- Las variables de nivel superior declaradas con var , const o let tienen como ámbito el módulo en lugar del objeto global.
- Proporciona algunas variables de aspecto global que son específicas del módulo, como:
- El módulo y el objeto de exportación que se pueden usar para exportar valores del módulo.
- Las variables como __filename y __dirname, que nos dicen el nombre de archivo absoluto del módulo y su ruta de directorio.
Modificación de la función contenedora del módulo: Considere que tenemos dos archivos, main.js y module.js . En main.js sobrescribimos la función Module.wrap para consola.log(‘modifedMWF’); cada vez que se requiere un módulo. Ahora, si requerimos module.js, contiene un mensaje para confirmar si nuestras modificaciones son exitosas o no.
- Este es el primer archivo que llamará segundo.
principal.js
var
Module = require(
"module"
);
(
function
(moduleWrapCopy) {
Module.wrap =
function
(script) {
script =
"console.log('modifiedMWF');"
+ script;
return
moduleWrapCopy(script);
};
})(Module.wrap);
require(
"./module.js"
);
- Este es el segundo archivo.
módulo.js
console.log(
"Hello Geeks from module.js!"
);
Salida: al ejecutar main.js, obtenemos la siguiente salida que confirma nuestra alteración exitosa en la función de envoltura del módulo.
node main.js