¿Te gustaría Javascript desde cero?
Tenemos los diplomados que necesitas.¡Haz clic aquí!

Módulos en ES2015

Afortunadamente, el equipo de ECMA (encargado de la estandarización de Javascript) decidió abordar el tema de los módulos.

El resultado se puede ver en la última versión del estándar Javascript: ECMAScript 2015 (anteriormente conocido como ECMAScript 6). El resultado es sintácticamente agradable, y compatible con ambos modos de operación (de forma síncrona y asíncrona).

//------ lib.js ------
export const sqrt = Math.sqrt;
export function square(x) {
    return x * x;
}
export function diag(x, y) {
    return sqrt(square(x) + square(y));
}

//------ main.js ------
import { square, diag } from 'lib';
console.log(square(11)); // 121
console.log(diag(4, 3)); // 5


La directiva import permite traer módulos al ámbito actual. Esta directiva, en contraste con require y define es no dinámica (es decir, no se puede llamar en cualquier lugar). La directiva export, por otro lado, puede usarse para explícitamente hacer públicos los elementos.

La naturaleza estática de import y export permite a los analizadores estáticos construir un árbol completo de las dependencias sin ejecutar código.

PROS

  • Soporta la carga síncrona y asíncrona.
  • Es sintácticamente simple.
  • Está integrado en el lenguaje mismo (eventualmente será soportado en todos lados sin necesidad de bibliotecas).
  • Soporta dependencias circulares.

CONS

  • Aún no está soportado en todos lados.

Implementaciones

Desafortunadamente no todos los intérpretes de JS soportan ES2015 en sus versiones estables.

Sin embargo, existen «transpiladores» (transpilers) que añaden este soporte.

Un ejemplo es el preset ES2015 para Babel. Babel es un transpiler, y ES2015 preset es un plugin que permite transformar código ES2015 (ES6) en ES5 (la versión típica de Javascript soportada por todos los navegadores desde hace varios años).

Un cargador universal: System.js

¿Deseas que tu proyecto funcione adecuadamente para todos los casos?

System.js es un cargador universal de módulos, que soporta CommonJS, AMD y los módulos de ES2015.

Una mejor alternativa

Hoy en día, Webpack ofrece lo mismo que System.JS y mucho más.

Webpack es un empaquetador de módulos que además optimiza nuestros archivos para producción, minificándolos y uniéndolos según se requiera (de hecho permite usar loaders para realizar más tareas durante este proceso).

Usar SystemJS y conseguir lo mismo que permite Webpack implicaría usar adicionalmente Gulp, o «SystemJS builder» para empaquetar nuestro proyecto para producción.

Finalmente

Los sistemas de módulos para Javascript surgen como una necesidad de los mismos programadores, de encapsular distintas funcionalidades en «bloques de código» reutilizables. Estos bloques son llamadas módulos y es importante contar con un mecanismo para gestionar las dependencias entre estos módulos.

Es así como surgen especificaciones, que buscan definir un formato para la importación y exportación de módulos, como CommonJS y AMD.

Estas especificaciones tienen sus correspondientes implementaciones con ligeras diferencias.

A fin de poner un poco de orden ante tanto caos, aparece una nueva versión del estándar Javascript: ES2015 (antes conocido como ES6).

Genial. ¿Entonces por qué tanto lío?

Lo que pasa es que no todos los navegadores han terminado de implementar este estándar de forma estable, y una gran cantidad de usuarios usa versiones antiguas.

La solución entonces está en «transformar nuestro código» en código que todos los navegadores puedan entender, haciendo uso de transpilers. O bien usar polyfills para darle a los navegadores la capacidad de entender características que aun no han implementado.

Existen muchas alternativas, pero una herramienta que ha tenido bastante acogida últimamente es Webpack. Esto es porque Webpack no solo soluciona este problema. También optimiza la ejecución de tareas, de empaquetar nuestro código y dejarlo listo para producción.

Pero Javascript no está únicamente en el lado del cliente. Las especificaciones también aplican a Javascript en el lado del servidor. Es por eso que en este artículo hemos mencionado a NodeJS.

Llamado a la acción

El ecosistema de Javascript cambia muy amenudo.

Esto se debe en gran parte a que las compañías tecnológicas más destacadas (entre ellas Facebook, Google, Twitter, Instagram) están siempre en búsqueda de mejores herramientas. Dejan de usar una para adoptar otra mejor, o crear su propia versión propuesta.

Pero no hay que temerle a estos cambios. Al final, son muchas formas de hacer «casi» lo mismo.

Te esperamos en los siguientes artículos en donde hablaremos mas acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.

Te esperamos en los siguientes artículos en donde hablaremos mas acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.

¿Te gustaría Javascript desde cero?
Tenemos los diplomados que necesitas.¡Haz clic aquí!
About Author

NGuerrero

0 0 votos
Article Rating
Suscribir
Notificar de
guest
0 Comments
Comentarios.
Ver todos los comentarios
0
¿Te gusta este articulo? por favor comentax