A principios del año pasado, se propuso introducir la importación dinámica en JavaScript. Si alguien no sabe, ahora solo la importación estática es compatible de forma nativa en JavaScript, y hay razones para esto, pero este es un tema para otra discusión. La propuesta fue implementada e incluida en la lista de próximas actualizaciones de ECMAScript. Google Chrome con la versión 63 ya es compatible con esta función. Te diré un poco qué es y dónde puede ser útil.
La importación dinámica se usa de manera muy similar a la importación estática, pero tiene varias diferencias clave:
La importación sintácticamente dinámica es similar a la llamada a la función: import ('ruta / a / module.js');
El comando de importación ('ruta / a / archivo.js') devuelve una Promesa, que entrará en el estado cumplido después de que el módulo mismo se extraiga e instale directamente, así como todas sus dependencias. Y esto significa que podemos escribir así:
import('path/to/module.js') .then(module => { module.loadPageInto(main); }) .catch(err => { main.textContent = err.message; });
O incluso así:
const module = await import('path/to/module.js');
Nota importante: aunque la importación dinámica es sintáctica y parece una llamada a la función import (), no es una función. No se hereda de Function.prototype, lo que significa que no se puede llamar por llamada o aplicar.
Hay muchas aplicaciones para la importación dinámica, require.js ha tenido una oportunidad similar y un paquete web, si no me equivoco también, muchos de ustedes probablemente hayan usado esta funcionalidad durante mucho tiempo. Ahora será posible hacer esto de forma nativa. Pero, por otro lado, la capacidad de importar dinámicamente, dependiendo de las condiciones, durante el tiempo de ejecución también proporciona un lugar para códigos más confusos, aunque entiendo que puede pegar un código incorrecto con cualquier cosa, no es la herramienta. Escriba su opinión en el comentario, ¿qué opina de la importación dinámica?
Puedes leer más y ver aquí:
https://github.com/tc39/proposal-dynamic-import
https://developers.google.com/web/updates/2017/11/dynamic-import
https://www.youtube.com/watch?v=eg8eLH52d4s&t=31s