Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Módulos

Los módulos en JavaScript son una forma de organizar y reutilizar código, permitiendo la encapsulación de funciones y variables en una unidad independiente. Esto ayuda a mantener el código limpio y fácil de entender, y también ayuda a evitar conflictos de nombres entre diferentes partes de una aplicación.

CommonJS y ES6

Hay varios sistemas de módulos disponibles en JavaScript, pero el más común es el sistema de módulos de ECMAScript (ES) 6, también conocido como módulos de ES6. Los módulos de ES6 se usan con la palabra clave import y export.

Con CommonJS, puedes exportar cualquier cosa que puedas asignar a una variable. Esto incluye funciones, objetos, números, cadenas, etc.

import y require son ambos utilizados para importar módulos en JavaScript, pero funcionan de manera diferente. import es una característica de ECMAScript 6 (también conocido como ES6), y es la forma recomendada de importar módulos en JavaScript a partir de ES6. Con import, puedes importar un módulo completo o solo una parte específica de él. Por ejemplo:

import { myFunction } from './myModule.js';

require es una característica de CommonJS, y se utiliza principalmente en aplicaciones Node.js. Con require, importas un módulo completo y debes asignarlo a una variable para poder utilizarlo. Por ejemplo:

const myModule = require('./myModule.js');

En resumen, import es más moderno y específico de JavaScript y se utiliza en aplicaciones client-side, mientras que require es más antiguo y se utiliza principalmente en aplicaciones Node.js.

Con CommonJS al importar un módulo, JavaScript envuelve el código en una función anónima y le entrega 5 parámetros (exports, module, require, __filename, __dirname). De estos parámetros usaremos el primero, el cual es un objeto que podemos reemplazar con lo que neceitemos exportar.

Módulos en Node

Node envuelve los archivos en una función entregando los parámetros del siguiente ejemplo

// function(exports, module, require, __filename, __dirname){

console.log(arguments) // revisar la consola  

// console.log(exports)   
// console.log(module)   
// console.log(require) // !Es una función!  
// console.log(__filename)   
// console.log(__dirname)

  module.exports = {
    a: 'a'
}

// return module.exports
//}

 

(function(){
  console.log(arguments)
})()