Un tema importante para todos los desarrolladores es el uso del estándar CommonJS en Node.js. Este estándar es esencial para estructurar el código en módulos y permitir que las aplicaciones sean más organizadas y mantenibles.
¿Qué es el estándar CommonJS?
CommonJS es una especificación de módulos para el lenguaje de programación JavaScript, que se utiliza principalmente en entornos de servidor y en aplicaciones de línea de comandos. Esta especificación fue creada para abordar las limitaciones de JavaScript en cuanto a la organización y reutilización de código en proyectos grandes.
Antes de Common JS, JavaScript no tenía un sistema nativo de módulos, lo que dificultaba la creación de aplicaciones modulares y mantenibles. CommonJS propuso un conjunto de convenciones para definir, importar y exportar módulos en JavaScript. Con esta especificación, los desarrolladores podían estructurar su código en pequeñas unidades, conocidas como módulos, y luego usarlas en diferentes partes de la aplicación.
Módulos en CommonJS
Los módulos en Common JS se crean utilizando la palabra clave exports
para exportar elementos y la función require
para importar módulos desde otros archivos. Esto asegura que el código sea modular y fácilmente accesible desde cualquier parte de la aplicación.
// En el archivo "pedidos.js"
exports.obtenerPedidos = function() {
// Lógica para obtener los pedidos
};
// En el archivo principal
const pedidos = require('./pedidos');
pedidos.obtenerPedidos();
En CommonJS, los módulos son unidades independientes de código que permiten organizar y reutilizar funciones en proyectos JavaScript. Los módulos en CommonJS tienen un enfoque sencillo y se basan en dos conceptos principales: require()
y exports
(o module.exports
).
Singleton y carga síncrona en CommonJS
Un aspecto importante de Common JS es que los módulos son singleton, lo que significa que solo hay una instancia de cada módulo en memoria. Cuando se carga un módulo con require
, se obtiene una referencia a la instancia ya existente en lugar de crear una nueva. Esto es especialmente útil para objetos que deben tener una única copia en memoria, como la configuración de la aplicación.
Además, la carga de módulos con require
es síncrona, lo que significa que el módulo se carga completamente antes de continuar con la ejecución del código. No es necesario preocuparse por gestionar promesas o callbacks al cargar módulos.
// Ejemplo de carga de módulo en CommonJS
const configuracion = require('./configuracion');
// configuracion es una única copia en memoria
Es importante destacar que, aunque CommonJS ha sido útil en el lado del servidor, su carga síncrona no es la mejor opción para aplicaciones web en el navegador. Para este propósito, se han adoptado otras especificaciones, como ES6 modules (ECMAScript 2015), que admiten la carga asincrónica, lo que mejora el rendimiento en aplicaciones web más grandes.
El uso de npm js
Una ventaja adicional del estándar CommonJS es que los módulos pueden ser compartidos y distribuidos a través del repositorio npm js. Este repositorio alberga millones de módulos creados por la comunidad de desarrolladores, lo que facilita la búsqueda y utilización de librerías y paquetes útiles en proyectos.
Para utilizar módulos de npm js, simplemente se debe instalar el módulo requerido en el proyecto y luego importarlo como se hace con los módulos locales.
Diferencias con los módulos de ECMAScript
En la actualidad, ECMAScript también cuenta con su propio sistema de módulos, llamado ECMAScript modules (ESM). Aunque los dos sistemas pueden convivir en un mismo proyecto, es importante tener en cuenta que tienen diferencias en su sintaxis y funcionalidades. Si bien ESM ofrece más flexibilidad y funcionalidades avanzadas, CommonJS sigue siendo muy utilizado en Node.js debido a su simplicidad y amplio soporte en la comunidad.
¿Cuál elegir?
Para los nuevos proyectos en Node.js, se recomienda utilizar CommonJS por su simplicidad y estabilidad. A medida que los desarrolladores adquieran más experiencia y necesitan funcionalidades avanzadas, pueden explorar el uso de módulos de ECMAScript.
Como hemos visto, el estándar CommonJS es una herramienta poderosa para organizar y estructurar el código en proyectos de Node.js. Facilita la creación de módulos reutilizables y su distribución a través de npm js. Aunque los módulos de ECMAScript también son una opción válida, CommonJS sigue siendo una elección sólida para proyectos más simples y para aquellos que buscan una rápida implementación.
En KeepCoding, fomentamos el uso de las mejores prácticas en desarrollo y tecnología, y el conocimiento sobre el estándar CommonJS en Node.js es esencial para que nuestros alumnos puedan destacar en el competitivo mundo de la programación y la tecnología. Por medio de nuestro Desarrollo Web Fullstack Bootcamp podrás aprender todas estas temáticas y muchas más para, en pocos meses, convertirte en un gran profesional. ¡Inscríbete ahora e impulsa tu futuro!