Existem benefícios de desempenho em usar um sobre o outro?
A resposta atual é não, porque nenhum dos mecanismos atuais do navegador é implementado import/export
no padrão ES6.
Alguns gráficos de comparação http://kangax.github.io/compat-table/es6/ não levam isso em consideração. Portanto, quando vir quase todos os greens do Chrome, tenha cuidado. import
A palavra-chave do ES6 não foi levada em consideração.
Em outras palavras, os motores atuais do navegador, incluindo V8 não pode importar novo arquivo JavaScript do arquivo principal JavaScript através de qualquer directiva JavaScript.
(Podemos ainda estar a apenas alguns bugs ou anos até que o V8 implemente isso de acordo com a especificação ES6.)
Este documento é o que precisamos e este documento é o que devemos obedecer.
E o padrão ES6 disse que as dependências do módulo deveriam estar lá antes de lermos o módulo como na linguagem de programação C, onde tínhamos .h
arquivos (cabeçalhos) .
Essa é uma estrutura boa e bem testada, e tenho certeza que os especialistas que criaram o padrão ES6 tinham isso em mente.
É isso que permite que o Webpack ou outros pacotes de pacotes otimizem o pacote em alguns casos especiais e reduzam algumas dependências do pacote que não são necessárias. Mas, nos casos em que temos dependências perfeitas, isso nunca acontecerá.
Isso levará algum tempo até que o import/export
suporte nativo seja ativado e a require
palavra - chave não vá a lugar algum por um longo período de tempo.
O que é require
?
Esta é a node.js
maneira de carregar módulos. ( https://github.com/nodejs/node )
O nó usa métodos no nível do sistema para ler arquivos. Você basicamente depende disso ao usar require
. require
terminará em algumas chamadas do sistema uv_fs_open
(depende do sistema final, Linux, Mac, Windows) para carregar o arquivo / módulo JavaScript.
Para verificar se isso é verdade, tente usar o Babel.js e você verá que a import
palavra - chave será convertida em require
.
node --experimental-modules index.mjs
permite usarimport
sem Babel e funciona no Nó 8.5.0+. Você pode (e deve) também publicar seus pacotes npm como ESModule nativo , com compatibilidade com versões anteriores darequire
maneira antiga .