JavaScript import vs require

Valentine Kagwiria 12 octubre 2023
  1. require() en JavaScript
  2. import() en JavaScript
  3. Principales diferencias entre require e import en JavaScript
JavaScript import vs require

Este artículo presenta las principales diferencias entre las declaraciones de JavaScript require() e import(). También proporciona contexto y detalla dónde se puede usar cada uno con ES6 y CommonJS.

require() en JavaScript

Esta es una declaración de node.js incorporada y se usa más comúnmente para incluir módulos de otros archivos separados. Funciona leyendo el archivo JS, ejecutándolo y devolviendo el objeto que se exporta. Es muy popular por su capacidad para incorporar módulos de nodos centrales, basados ​​en la comunidad e incluso módulos locales.

Podemos usar require() para incluir un módulo incorporado en JavaScript.

const express = require('express');

También es fácil incluir un módulo local.

require('local_module');

Como se ilustra arriba, node.js intentará encontrar el local_module.js en las rutas especificadas. La salida diferirá según lo que encuentre el nodo: si el archivo existe en la ruta especificada, la salida mostrará el contenido del módulo. Si no es así, puede recibir un error como el siguiente:

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() en JavaScript

import() es un módulo ES6. Junto con export(), se les conoce comúnmente como importación y exportación ES6. Esto esencialmente significa que las declaraciones no se pueden usar con otros tipos de archivos fuera de los módulos ES.

La declaración import() permite al usuario importar sus módulos y usarlos en el programa. La sintaxis es:

import './this-module.js';

El usuario especifica la ruta del archivo al módulo que se está importando.

Principales diferencias entre require e import en JavaScript

Mientras que require() es una declaración de node.js que usa CommonJS, import() se usa solo con ES6.

require() permanece donde se ha colocado en el archivo (no léxico), y import() siempre se mueve al principio.

require() se puede llamar para su uso en cualquier punto del programa, pero import() solo se puede ejecutar al principio del archivo.

La mayoría de las personas ejecutan código con la declaración require() directamente, pero prefieren usar el indicador de función del módulo experimental cuando se trabaja con import().

Finalmente, todos los archivos que utilizan la instrucción require() se guardan como archivos .js, mientras que aquellos con import() solo se pueden guardar como archivos .mjs.

No se pueden utilizar en un programa al mismo tiempo.

Generalmente, import() es más preferido porque permite al usuario elegir y cargar solo las piezas del módulo que necesita. La instrucción también funciona mejor que require() y ahorra algo de memoria.