Original article: JavaScript Require – How to Use the require() Function in JS

En JavaScript, los módulos se refieren a un archivo que contiene código JavaScript, el cual realiza un propósito específico.

Los módulos son autocontenidos, lo que facilita agregar, eliminar y actualizar funcionalidades sin afectar a todo tu código, porque están desacoplados de otras piezas de código.

Cuando tienes estos módulos en archivos JavaScript separados, querrás usarlos dentro del archivo JavaScript original.

En este artículo aprenderás lo que la función require() hace, cómo la puedes usar, y algunas diferencias entre las funciones require e import.

Durante mucho tiempo, el sistema de módulo CommonJS ha sido el sistema de módulo por defecto dentro del ecosistema Node.js. Pero un nuevo sistema de módulo fue introducido en Node.js v8.5.0, el cual es el sistema de módulo ES.

Los módulos CommonJS y EMCAScript (módulos ES) ahora trabajan a la perfección en Node.js. La mayor diferencia entre ellos es su ejecución.

Cómo ejecutar los módulos CommonJS y ES

En el navegador, la ejecución del módulo JavaScript depende de las sentencias import y export. Estas sentencias cargan y exportan los módulos ES respectivamente. Esta es la manera estándar y oficial de reusar módulos en JavaScript, y es lo que la mayoría de navegadores web soportan de forma nativa.

Por defecto, Node.js soporta el formato de módulo CommonJS, que carga módulos usando la función require(), y los exporta con module.exports.

¿Qué es la función JavaScript require()?

La función require() es una función de módulo CommonJS incorporada soportada en Node.js que te permite incluir módulos dentro de tu proyecto. Esto se debe a que, por defecto, Node.js trata el código JavaScript como módulos CommonJS.

Cómo Usar la Función require() en JS

La función require() es fácil de usar y entender, ya que todo lo que tienes que hacer es asignar la función a una variable.

En esta función, pasarás el nombre de la ubicación como argumento. Esta es la sintaxis general:

const NombreVariable = require(nombreUbicacion);

Supón que tienes un módulo CommonJS que exporta una función obtenNombreCompleto como se ve a continuación:

// utils.js
const obtenNombreCompleto = (nombre, apellido) => {
    return `Mi nombre completo es ${nombre} ${apellido}`;
};
module.exports = obtenNombrecompleto;

Entonces puedes usar la función require() para usar/incluir este módulo dentro de tu archivo JavaScript:

// index.js
const obtenNombreCompleto = require('./utils.js');
console.log(obtenNombreCompleto('John', 'Doe')); // Mi nombre completo es John Doe

El módulo se encuentra dentro de un archivo local en el código de arriba, razón por la cual se hace referencia a la dirección local usando el nombre del archivo.

Pero en una situación en la que quieras incluir un módulo externo desde la web, entonces haces uso de la localización basada en la web:

const miVar = require('http://modulo-web.localizacion');

Funciones require() vs import()

Las funciones/sentencias require e import son usadas para incluir módulos dentro de tu archivo JavaScript, pero poseen algunas diferencias. Las dos principales son:

  • La función require() puede ser llamada desde cualquier parte dentro del programa, mientras que import() no puede ser llamada condicionalmente. Siempre se ejecuta al inicio del archivo.
  • Para incluir un módulo con la función require(), ese módulo debe ser guardado con una extensión .js en lugar de una .mjs cuando la sentencia import() es utilizada.

Conclusión

En este artículo, has aprendido lo que hace la función require(), cómo funciona, y cuándo la puedes usar en Node.js.

Es crucial entender que la sentencia import solo está permitida en módulos ES y no puede ser usada en scripts embebidos sin el atributo type="module". Además, para usar módulos ES en Node.js, debes guardar dichos módulos con una extensión .mjs:

// utils.mjs
export const obtenNombrecompleto = (nombre, apellido) => {
    return `Mi nombre completo es ${nombre} ${apellido}`;
};

// index.js
import { obtenNombrecompleto } from './utils.mjs';
console.log(obtenNombreCompleto('John', 'Doe')); // Mi nombre completo es John Doe

¡Diviértete escribiendo código!

Puedes acceder a más de 180 de mis artículos visitando mi sitio web. También puedes usar el campo de búsqueda para revisar si he escrito algún artículo en específico.