informatica:programacion:cursos:programacion_avanzada_javascript:modulos_javascript
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| informatica:programacion:cursos:programacion_avanzada_javascript:modulos_javascript [2024/10/29 15:52] – [DEMO: Cargar módulos desde HTML] tempwin | informatica:programacion:cursos:programacion_avanzada_javascript:modulos_javascript [2024/10/30 16:07] (actual) – [Recursos] tempwin | ||
|---|---|---|---|
| Línea 611: | Línea 611: | ||
| Lamentablemente cuando salió ES2015, el cargador de módulos no estaba definido, ni tampoco la API que debía usarse para configurarlo. Esto significaba que **no había en el mercado ningún motor de ECMAScript que soportase los módulos de ES2015 de forma nativa**. Ningún navegador, ni Node.js en ninguna de sus versiones. Afortunadamente **eso ha cambiado y en la actualidad tenemos una especificación completa** del sistema de módulos, y todas las versiones modernas de navegadores // | Lamentablemente cuando salió ES2015, el cargador de módulos no estaba definido, ni tampoco la API que debía usarse para configurarlo. Esto significaba que **no había en el mercado ningún motor de ECMAScript que soportase los módulos de ES2015 de forma nativa**. Ningún navegador, ni Node.js en ninguna de sus versiones. Afortunadamente **eso ha cambiado y en la actualidad tenemos una especificación completa** del sistema de módulos, y todas las versiones modernas de navegadores // | ||
| - | <WRAP center round todo 60%> | + | {{ : |
| - | soporte | + | |
| - | </ | + | |
| La imagen anterior es para el soporte de módulos dinámicos, que son aquellos que se cargan usando el propio lenguaje ECMAScript, a través de la palabra clave '' | La imagen anterior es para el soporte de módulos dinámicos, que son aquellos que se cargan usando el propio lenguaje ECMAScript, a través de la palabra clave '' | ||
| - | <WRAP center round todo 60%> | + | {{ : |
| - | soporte de módulos ES6 con etiqueta | + | |
| - | </ | + | |
| ==== Definiendo un módulo ECMAScript 2015 ==== | ==== Definiendo un módulo ECMAScript 2015 ==== | ||
| Línea 1216: | Línea 1211: | ||
| export default (a,b) => a+b; | export default (a,b) => a+b; | ||
| </ | </ | ||
| + | |||
| + | |||
| + | <WRAP center round info 60%> | ||
| + | Como hemos visto, ya no es necesario Babel o ningún otro transpilador en las últimas versiones de los navegadores porque soportan los módulos de forma nativa. | ||
| + | </ | ||
| ==== DEMO: Soporte de módulos ES6 en NodeJS ==== | ==== DEMO: Soporte de módulos ES6 en NodeJS ==== | ||
| + | <WRAP center round important 60%> | ||
| + | Este código tiene varios años, es muy probable que ya no funcione igual o que las notas que acompañen esta sección estén desfasadas | ||
| + | </ | ||
| + | Fichero '' | ||
| + | |||
| + | <code javascript> | ||
| + | import {next} from ' | ||
| + | const value = 42; | ||
| + | console.log(next(value)); | ||
| + | </ | ||
| + | |||
| + | <WRAP center round info 60%> | ||
| + | Node.js obliga que los ficheros de módulos tengan la extensión '' | ||
| + | </ | ||
| + | |||
| + | Fichero '' | ||
| + | |||
| + | <code javascript> | ||
| + | import sum from ' | ||
| + | const next = i => sum(i,1); | ||
| + | export {sum, next}; | ||
| + | </ | ||
| + | |||
| + | Fichero '' | ||
| + | |||
| + | <code javascript> | ||
| + | export default (a,b) => a+b; | ||
| + | </ | ||
| + | |||
| + | Ejecutamos con Node.js indicando la característica experimental: | ||
| + | |||
| + | <code bash> | ||
| + | node --experimental-modules index.mjs | ||
| + | </ | ||
| + | ===== Recursos ===== | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
informatica/programacion/cursos/programacion_avanzada_javascript/modulos_javascript.1730213538.txt.gz · Última modificación: por tempwin
