JavaScript import vs require
-
require()
em JavaScript -
import()
em JavaScript -
Principais diferenças entre
require
eimport
em JavaScript
Este artigo apresenta as principais diferenças entre as instruções JavaScript require()
e import()
. Ele também fornece contexto e detalha onde cada um pode ser usado com o ES6 e o CommonJS.
require()
em JavaScript
Esta é uma instrução node.js embutida e é mais comumente usada para incluir módulos de outros arquivos separados. Ele funciona lendo o arquivo JS, executando-o e retornando o objeto que está sendo exportado. É muito popular por sua capacidade de incorporar módulos de nós centrais, baseados na comunidade e até mesmo módulos locais.
Podemos usar require()
para incluir um módulo embutido em JavaScript.
const express = require('express');
Também é fácil incluir um módulo local.
require('local_module');
Conforme ilustrado acima, node.js
tentará encontrar o local_module.js
nos caminhos especificados. A saída será adiada de acordo com o que o nó encontrar: se o arquivo existir no caminho especificado, a saída exibirá o conteúdo do módulo. Caso contrário, você pode receber um erro como este abaixo:
Error: Cannot find module 'local_module'
at Function.Module._resolveFilename(module.js: 470: 15)
at Function.Module._load(module.js: 418: 25)
at Module.require(module.js: 498: 17)
at require(internal / module.js: 20: 19)
at repl: 1: 1
at ContextifyScript.Script.runInThisContext(vm.js: 23: 33)
at REPLServer.defaultEval(repl.js: 336: 29)
at bound(domain.js: 280: 14)
at REPLServer.runBound[as eval](domain.js: 293: 12)
at REPLServer.onLine(repl.js: 533: 10)
import()
em JavaScript
import()
é um módulo ES6. Junto com export()
, eles são comumente referidos como ES6 import and export. Isso significa essencialmente que as instruções não podem ser usadas com outros tipos de arquivo fora dos módulos ES.
A instrução import()
permite ao usuário importar seus módulos e usá-los no programa. A sintaxe é:
import './this-module.js';
O usuário especifica o caminho do arquivo para o módulo que está sendo importado.
Principais diferenças entre require
e import
em JavaScript
Enquanto require()
é uma instrução node.js
que usa CommonJS, import()
é usado apenas com ES6.
require()
permanece onde foi colocado no arquivo (não léxico), e import()
sempre move para o topo.
require()
pode ser chamado para uso em qualquer ponto do programa, mas import()
só pode ser executado no início do arquivo.
A maioria das pessoas executa o código com a instrução require()
diretamente, mas prefere usar o sinalizador de recurso do módulo experimental ao trabalhar com import()
.
Finalmente, todos os arquivos que usam a instrução require()
são salvos como arquivos .js
, enquanto aqueles com import()
só podem ser salvos como arquivos .mjs
.
Eles não podem ser usados em um programa ao mesmo tempo.
Geralmente, import()
é mais preferido porque permite ao usuário escolher e carregar apenas as partes do módulo de que precisa. A instrução também tem um desempenho melhor do que require()
e economiza alguma memória.