Módulos de JavaScript Explicados: Tutorial para Principiantes

Por:


Una breve historia de los módulos de JavaScript

Technicamente hablando, los desarrolladores han estado usando módulos en JavaScript por un tiempo. Soluciones como CommonJS (para Node.js), Browserify y Require.js han permitido a los desarrolladores separar su código en módulos reutilizables que hacen que el código sea más fácil de mantener.

CommonJS fue básicamente la base del sistema de gestión de paquetes de Node, npm. Esto permitió a los desarrolladores crear paquetes o módulos que podían agregar a un registro remoto, permitiendo que otros los usen. También, podían usar módulos en el registro de npm para sus propios proyectos. Pero esto era exclusivo de Node.js (JavaScript en el backend), por lo que los navegadores (JavaScript del lado del cliente) no tenían una forma de incorporar esta gestión de paquetes modular.

Por eso, los desarrolladores de JavaScript crearon herramientas como Browserify y Require.js para incorporar módulos y agruparlos para proyectos frontend. Más tarde, la comunidad introdujo soluciones de agrupación más potentes como Webpack y Parcel, permitiendo que el proceso sea una parte regular del desarrollo moderno de JavaScript.

Si quieres profundizar en los detalles de la historia de los módulos de JavaScript, consulta este artículo.

Módulos de JavaScript nativos

Soluciones como CommonJS eran necesarias para hacer posible los módulos en JavaScript (especialmente en Node.js). Pero JavaScript necesitaba algo mejor. En 2015, el estándar ECMAScript añadió oficialmente soporte para módulos nativos (o ES Modules) que ya no requerían herramientas de terceros para el desarrollo modular en el navegador.

Los módulos nativos son beneficiosos por varias razones, incluyendo:

  • Los módulos de JavaScript permiten a los desarrolladores encapsular y organizar el código en partes más pequeñas y reutilizables. Esta modularidad hace que sea más fácil gestionar y mantener cualquier base de código.
  • Puedes reutilizar los módulos de JavaScript, lo que evita la duplicación en un proyecto y ayuda a mantener el código DRY (es decir, “Don’t Repeat Yourself”).
  • Los módulos garantizan que el navegador cargue solo las partes necesarias del código en cualquier momento, mejorando así el rendimiento de las aplicaciones web, incluidas las PWAs.
  • El código modular evita en gran medida los conflictos de nombres, ya que la modularidad aísla variables y otras referencias, evitando conflictos con otros módulos y sin contaminar el ámbito global.
  • Los módulos hacen mucho más fácil las pruebas unitarias, ya que puedes ejecutar pruebas en módulos aislados sin afectar a otras partes del código.

Con esa pequeña lección de historia y los beneficios claros, ahora profundicemos en el código para que puedas ver cómo utilizar los módulos de JavaScript en aplicaciones web modernas.

Sintaxis para incluir módulos de JavaScript

Puedes insertar cualquier módulo de JavaScript en una página web utilizando casi la misma sintaxis que cualquier otro script. Pero ten en cuenta una pequeña diferencia:

body>
  ...

  script src="index.js" type="module">script>
body>
Language code: HTML, XML (xml)

En el código anterior, he añadido el elemento