Estoy tratando de usar VeeValidate y los ejemplos muestran el uso de la importación ES6 de esta manera:

import { Validator } from 'vee-validate';

Tengo entendido que esto funciona solo con npm y no con CDN. Solo quiero escribir js del lado del cliente y no usar el nodo js. ¿Tengo que buscar algo como browserify o webpack?

Traté de copiar el javascript del enlace CDN y simplemente convertirlo en un archivo js local para importar, pero no pude hacerlo funcionar. ¿No funcionó porque no tenía declaraciones de exportación?

9
rrebase 3 mar. 2018 a las 00:19

3 respuestas

La mejor respuesta

Actualmente, la sintaxis de importación / exportación es compatible con menos del 80% del navegador de todos los usuarios (caniuse.com) .

Puede usarlo para "incluir" su script, pero lo primero es poner type="module" como un atributo de un <script tag> (Ej. <script type="module">)

Entonces puede import / export en sus módulos. Y los módulos necesitan exportar un valor (variable, función ...) para poder usarlo en otro script, pero esto es opcional ya que puede ejecutar el script sin la necesidad de exportar algo.

Documentación:

Tenga en cuenta que aún no es una característica compatible y necesitará un polyfill si le preocupa la compatibilidad del navegador

7
538ROMEO 7 jul. 2018 a las 18:52

El problema, como dijiste, es que actualmente la importación solo se admite globalmente a través de Node. Si desea importar rápidamente el código en el lado del cliente, y jQuery es una opción, puede usar:

$.getScript( "ajax/test.js" )
.done(function( script, textStatus ) {
    console.log( textStatus );
})
.fail(function( jqxhr, settings, exception ) {
    $( "div.log" ).text( "Triggered ajaxError handler." );
});

Esto cargará y ejecutará el código JavaScript del servidor. La devolución de llamada done se llama cuando el script ha finalizado la descarga, pero no necesariamente ha completado la ejecución.

Para obtener más información, puede consultar la referencia oficial

0
Chris - Jr 5 mar. 2018 a las 13:22

Pruebe esto :

const url = './demo.js';
try { import(url).loadPageInto(main);} 
catch (error) { main.textContent = error.message; }
0
Chau Phu Cuong 15 mar. 2019 a las 01:29