tutorial from es6 javascript ecmascript-6 es6-module-loader

es6 - import from url javascript



ES6: módulo de importación desde URL (3)

¿Es posible importar el módulo javascript desde una url externa en ES6?

Intenté (usando babel-node):

import mymodule from ''http://...mysite.../myscript.js''; // Error: Cannot find module ''http://...mysite.../myscript.js''


TL; DR:

Por ahora no .

Respuesta larga:

Hay dos especificaciones diferentes: el ES6 define la sintaxis para exportar / importar. Y existe la especificación del cargador que realmente define cómo se cargarán estos módulos.

Dejando a un lado las especificaciones, la parte importante para nosotros los desarrolladores es:

JavaScript Loader permite que los entornos host, como Node.js y navegadores, obtengan y carguen módulos a pedido. Proporciona una tubería conectable, para permitir que las soluciones de empaquetado front-end como Browserify, WebPack y jspm se enganchen en el proceso de carga.

Esta división proporciona un formato único que los desarrolladores pueden usar en todos los entornos de JavaScript, y un mecanismo de carga separado para cada entorno. Por ejemplo, un Node Loader cargaría sus módulos desde el sistema de archivos, usando su propio algoritmo de búsqueda de módulos, mientras que un Browser Loader buscaría módulos y usaría formatos de empaquetado provistos por el navegador.

(...)

El objetivo principal es hacer que la mayor parte posible de este proceso sea coherente entre los entornos Node y Browser. Por ejemplo, si un programa de JavaScript quiere traducir archivos .coffee a JavaScript sobre la marcha, el cargador define un .coffee "traducción" que se puede utilizar. Esto permite que los programas participen en el proceso de carga, aunque algunos detalles (específicamente, el proceso de obtener un módulo particular de su almacenamiento definido por el host) serán diferentes entre los entornos.

Por lo tanto, dependemos del entorno del host (nodo, navegador, babel, etc.) para resolver / cargar los módulos por nosotros y proporcionar enlaces al proceso.


Actualización 2018: la especificación del cargador de módulos ahora forma parte de la especificación ES: lo que está describiendo está permitido y es posible con <script type="module"> en los navegadores y con un --loader personalizado con Node.js y con Deno si te gusta eso.

La especificación del cargador del módulo y la sintaxis de importación / exportación son independientes. Entonces, esta es una propiedad del cargador de módulos (no es parte de la especificación ES). Si usa un cargador de módulos que admita complementos como SystemJS .


También podría usar scriptjs que en mi caso requiere menos configuraciones.

var scriptjs = require(''scriptjs''); scriptjs(''https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.standalone.js'', function() { L.mapbox.accessToken = ''MyToken''; });