Cada archivo JavaScript se trata como un módulo separado en NodeJS . Utiliza el sistema de módulos commonJS : require() , export y module.export .
El objeto principal exportado por el módulo require() es una función. Cuando Node invoca esa función require() con una ruta de archivo como único argumento de la función, Node realiza la siguiente secuencia de pasos:
- Resolviendo y Cargando
- Envase
- Ejecución
- Devolución de exportaciones
- almacenamiento en caché
Veamos cada paso con más detalle.
- Resolución y carga: en este paso, los Nodes deciden qué módulo cargar el módulo central o el módulo de desarrollador o el módulo de terceros mediante los siguientes pasos:
- Cuando la función require recibe el nombre del módulo como su entrada, primero intenta cargar el módulo central.
- Si la ruta en la función requerida comienza con ‘./’ o ‘../’ , intentará cargar el módulo de desarrollador.
- Si no se encuentra ningún archivo, intentará encontrar la carpeta con index.js.
- De lo contrario, irá a node_modules/ e intentará cargar el módulo desde aquí.
- Si aún no se encuentra el archivo, se genera un error.
- Envoltura: una vez que se carga el módulo, el código del módulo se envuelve en una función especial que dará acceso a un par de objetos.
Estructura de carpetas:
Ejemplo 1:
module2.js
// Caching const mod = require('./module1.js')
module1.js
console.log(require("module").wrapper);
Producción:
[ '(function (exports, require, module, __filename, __dirname) { ', '\n});' ]
- Ejecución: en esta parte, el código del módulo o código dentro de la función contenedora ejecutada por el tiempo de ejecución de NodeJS.
- Devolución de exportaciones: en esta parte, la función require devuelve las exportaciones del módulo requerido. Estas exportaciones se almacenan en module.exports.
Use module.exports para exportar una sola variable/clase/función. Si desea exportar varias funciones o variables, utilice exportaciones (exportaciones.añadir = (a,b)=>a+b).
- Almacenamiento en caché: al final, todos los módulos se almacenan en caché después de la primera vez que se cargan, por ejemplo, si necesita el mismo módulo varias veces, obtendrá el mismo resultado. Entonces, el código y los módulos se ejecutan en la primera llamada y, en una llamada posterior, los resultados se recuperan del caché.
Ejemplo 2: Tomemos un ejemplo para entender el almacenamiento en caché
module1.js
console.log("Hello GEEKSFORGEEKS"); module.exports = ()=> console.log("GeeksForGeeks is the best !!");
module2.js
// Caching const mod = require('./module1.js'); mod(); mod(); mod();
Producción:
Hello GEEKSFORGEEKS GeeksForGeeks is the best !! GeeksForGeeks is the best !! GeeksForGeeks is the best !!