En este tema, aprenderemos sobre los módulos en JavaScript, cómo dividir nuestro código en partes más manejables y cómo importar y exportar esas partes para usarlas en diferentes archivos. Los módulos son una característica esencial para mantener el código organizado y reutilizable.

Conceptos Clave

  1. Módulos: Un módulo es simplemente un archivo que contiene código JavaScript. Cada módulo tiene su propio ámbito y puede exportar variables, funciones, clases, etc., que pueden ser importadas por otros módulos.
  2. Exportación: Permite que partes de un módulo (como funciones, objetos o variables) sean accesibles desde otros módulos.
  3. Importación: Permite que un módulo use funciones, objetos o variables exportadas desde otro módulo.

Exportación

Exportación Nombrada

La exportación nombrada permite exportar múltiples valores desde un módulo. Cada valor exportado debe ser importado usando el mismo nombre.

// math.js
export const pi = 3.14159;
export function add(a, b) {
  return a + b;
}
export class Calculator {
  multiply(a, b) {
    return a * b;
  }
}

Exportación por Defecto

La exportación por defecto permite exportar un único valor desde un módulo. Este valor puede ser importado usando cualquier nombre.

// greeting.js
export default function greet(name) {
  return `Hello, ${name}!`;
}

Importación

Importación Nombrada

Para importar valores exportados de manera nombrada, usamos la sintaxis import { ... } from '...'.

// main.js
import { pi, add, Calculator } from './math.js';

console.log(pi); // 3.14159
console.log(add(2, 3)); // 5

const calc = new Calculator();
console.log(calc.multiply(2, 3)); // 6

Importación por Defecto

Para importar un valor exportado por defecto, usamos la sintaxis import ... from '...'.

// main.js
import greet from './greeting.js';

console.log(greet('World')); // Hello, World!

Importación Combinada

Podemos combinar la importación nombrada y por defecto en una sola declaración.

// main.js
import greet, { pi, add, Calculator } from './math.js';

console.log(greet('World')); // Hello, World!
console.log(pi); // 3.14159
console.log(add(2, 3)); // 5

const calc = new Calculator();
console.log(calc.multiply(2, 3)); // 6

Ejemplo Práctico

Vamos a crear un pequeño proyecto que usa módulos para organizar el código.

Paso 1: Crear los Módulos

math.js

export const pi = 3.14159;

export function add(a, b) {
  return a + b;
}

export default class Calculator {
  multiply(a, b) {
    return a * b;
  }
}

greeting.js

export default function greet(name) {
  return `Hello, ${name}!`;
}

Paso 2: Importar y Usar los Módulos

main.js

import greet from './greeting.js';
import Calculator, { pi, add } from './math.js';

console.log(greet('World')); // Hello, World!
console.log(`The value of pi is ${pi}`); // The value of pi is 3.14159
console.log(`2 + 3 = ${add(2, 3)}`); // 2 + 3 = 5

const calc = new Calculator();
console.log(`2 * 3 = ${calc.multiply(2, 3)}`); // 2 * 3 = 6

Ejercicio Práctico

  1. Crear un módulo llamado stringUtils.js que contenga las siguientes funciones:

    • toUpperCase(str): Convierte una cadena a mayúsculas.
    • toLowerCase(str): Convierte una cadena a minúsculas.
    • capitalize(str): Capitaliza la primera letra de una cadena.
  2. Crear un archivo app.js que importe las funciones de stringUtils.js y las use para manipular una cadena de texto.

Solución

stringUtils.js

export function toUpperCase(str) {
  return str.toUpperCase();
}

export function toLowerCase(str) {
  return str.toLowerCase();
}

export function capitalize(str) {
  return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
}

app.js

import { toUpperCase, toLowerCase, capitalize } from './stringUtils.js';

const text = 'hello world';

console.log(toUpperCase(text)); // HELLO WORLD
console.log(toLowerCase(text)); // hello world
console.log(capitalize(text)); // Hello world

Conclusión

En esta sección, hemos aprendido sobre los módulos en JavaScript y cómo usar la importación y exportación para organizar nuestro código. Los módulos nos permiten dividir nuestro código en partes más manejables y reutilizables, lo que facilita el mantenimiento y la escalabilidad de nuestras aplicaciones. En el siguiente módulo, profundizaremos en el JavaScript asíncrono y cómo manejar operaciones asíncronas de manera eficiente.

JavaScript: De Principiante a Avanzado

Módulo 1: Introducción a JavaScript

Módulo 2: Estructuras de Control

Módulo 3: Funciones

Módulo 4: Objetos y Arrays

Módulo 5: Objetos y Funciones Avanzadas

Módulo 6: El Modelo de Objetos del Documento (DOM)

Módulo 7: APIs del Navegador y Temas Avanzados

Módulo 8: Pruebas y Depuración

Módulo 9: Rendimiento y Optimización

Módulo 10: Frameworks y Librerías de JavaScript

Módulo 11: Proyecto Final

© Copyright 2024. Todos los derechos reservados