Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

require vs import

estava dando uma pesquisada, e descobri que o nodejs na versao atual 6.x, ja possui suport a EC6, gostaria de saber se existe muita diferença entre os require, e o import, ou seja a maneira de importar modulos no nodejs, eu ja entendi como funciona o 'require', mas fiquei confuso em relaçao ao import, alguem porderia explicar, ele realmente funciona, ou so no EC6 fora do nodejs, ou seja no navegador?

6 respostas

Oi Jonathan, tudo bem? Bom, essa é uma boa pergunta! São dois padrões diferentes de importar e exportar módulos javascript. O node adotou inicialmente o padrão antes definido pelo commonjs o qual você já conhece. A forma do ES6, até onde sei, na prática, so muda o import, que neste caso não se usa require, mas sim import mesmo assim:

import {a,b} from 'file';

neste caso eu estaria importando dois módulos exportados de dentro do arquivo file.js.

Até onde sei os navegadores ainda estão começando a dar suporte (http://caniuse.com/#feat=es6-module).

A outra diferença até onde pude ver e em relação a avaliação do módulo, importação que no require é síncrono e no import é assíncrono. O que com certeza trás algumas dificuldades.

Eu encontrei esse artigo em inglês explicando algumas das diferenças, caso queira ler: https://medium.com/the-node-js-collection/an-update-on-es6-modules-in-node-js-42c958b890c

Wanderson valew pela materia, eu acabei por ler as duas publicada pelo autor, nao manjo tanto de ingles, mas deu pra entender um pouco, pelo que entendi nas minhas pesquisas, para usar o import no nodejs e preciso da lib 'BABEL', minha duvida ficou, pela materia, existe algumas dificuldades da implantaçao desse metodo no nodejs, ou seja, ele e viavel de se usar, ja que ontem tava vendo uma oferta de emprego para nodejs, e na publicidade deles estava escrito assim "para voce que usa import em vez de require" e isso me deixo muito em duvida, se tipo realmente vale a pena usar o import, se possivel me diga sua opiniao pessoal.

O Babel no caso é para que seja possível utilizar imports no navegador. Utilizar Babel no servidor eu não vejo muito sentido já que você pode simplesmente atualizar a versão do Node e pronto.

De valer a pena usar, a resposta será sempre sim, isso por que você deixa de depender diretamente de um recurso implementado por uma ferramenta e passa a depender de uma especificação. A tendência futura eu acredito que seja utilizar normalmente o import, mas o require não pode ser naturalmente removido, visto que isso impactaria na quebra de muitas aplicações por ai.

No geral, o que muda de certa forma é que no import você tem uma flexibilidade extra na hora de importar os módulos e por enquanto, acho que você não deveria focar muito nisso. Apenas estar antenado nas novidades já é uma boa.

Você até me adiantou esse tópico interessante, que até então eu não havia percebido. Mas pelo que li, no node ainda não temos suporte ao import do ES6, mas já há usos dele nos navegadores, porém, com uso do Babel.

Wanderson, qual versao do node ja possui o import nativamente?, desculpe e que atualizei esses dias, justamente para testar essa funcionalidade, mas nao consegui da erro no codigo :/, ae rodei o 'babel' para ver com funcionava e foi tranquilo.

solução

Nenhuma Jonathan, foi isso que falei no post anterior, não tem suporte no Node, no navegador até que tem, mas você precisa configurar flags (tá beta ainda). Utilizando Babel funciona, por que no final das contas o Babel transpila seu código para algo que funciona, mas não é o nativo ainda. Pegou a ideia?

Peguei :), obrigado Wanderson :).