Herramientas de usuario

Herramientas del sitio


informatica:programacion:cursos:programacion_avanzada_javascript:modulos_javascript

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:programacion:cursos:programacion_avanzada_javascript:modulos_javascript [2024/10/29 15:57] – [DEMO: Soporte de módulos ES6 en NodeJS] tempwininformatica: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 //evergreen// ya podemos usarlo, tal y [[https://caniuse.com/#feat=es6-module-dynamic-import|como nos indica caniuse]]: 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 //evergreen// ya podemos usarlo, tal y [[https://caniuse.com/#feat=es6-module-dynamic-import|como nos indica caniuse]]:
  
-<WRAP center round todo 60%> +{{ :informatica:programacion:cursos:programacion_avanzada_javascript:21-es6-dynamic-module-soporte-caniuse.png |}}
-soporte de módulos ES6 dinámicos +
-</WRAP>+
  
 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 ''import'' (de una forma similar a como usábamos ''require'' en módulos CommonJS). Pero el sistema de módulos de ES2015 va mucho más allá y **se soporta también la carga de módulos usando etiquetas ''<script>''**. De nuevo [[https://caniuse.com/#feat=es6-module|caniuse nos muestra el soporte]] de esta otra característica: 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 ''import'' (de una forma similar a como usábamos ''require'' en módulos CommonJS). Pero el sistema de módulos de ES2015 va mucho más allá y **se soporta también la carga de módulos usando etiquetas ''<script>''**. De nuevo [[https://caniuse.com/#feat=es6-module|caniuse nos muestra el soporte]] de esta otra característica:
  
-<WRAP center round todo 60%> +{{ :informatica:programacion:cursos:programacion_avanzada_javascript:21-es6-script-module-soporte-caniuse.png |}}
-soporte de módulos ES6 con etiqueta script +
-</WRAP> +
 ==== Definiendo un módulo ECMAScript 2015 ==== ==== Definiendo un módulo ECMAScript 2015 ====
  
Línea 1228: Línea 1223:
 </WRAP> </WRAP>
  
-''index.mjs'':+Fichero ''index.mjs'':
  
 <code javascript> <code javascript>
Línea 1240: Línea 1235:
 </WRAP> </WRAP>
  
 +Fichero ''.inc.mjs'':
  
 <code javascript> <code javascript>
 +import sum from './sum.mjs'
 +const next = i => sum(i,1);
 +export {sum, next};
 +</code>
  
 +Fichero ''sum.mjs'':
 +
 +<code javascript>
 +export default (a,b) => a+b;
 </code> </code>
 +
 +Ejecutamos con Node.js indicando la característica experimental:
 +
 +<code bash>
 +node --experimental-modules index.mjs
 +</code>
 +
 +===== Recursos =====
 +
 +  * [[https://github.com/systemjs/systemjs|SystemJS]]
 +  * [[https://browserify.org/|browserify]]
 +  * [[https://webpack.github.io/|webpack]]
 +  * [[https://requirejs.org/|RequireJS]]
 +  * [[https://www.npmjs.com/package/local-web-server|NodeJS local web server]]
informatica/programacion/cursos/programacion_avanzada_javascript/modulos_javascript.1730213871.txt.gz · Última modificación: por tempwin