JavaScript import vs require

Valentine Kagwiria 12 outubro 2023
  1. require() em JavaScript
  2. import() em JavaScript
  3. Principais diferenças entre require e import em JavaScript
JavaScript import vs require

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.