módulo en Node.js-#02 Módulos - Exports y Require

 

12. Ejecutando Código de Node desde el package.json

1. Crear el archivo principal

JS → Siempre tienes que tener un archivo principal. Este archivo se va a encargar de llamar todos los demás archivos de tu aplicación.

Puedes nombrarlo como desees:

  • app.js

  • index.js

  • main.js

  • O el nombre del proyecto

A diferencia de HTML (donde el archivo principal se llama index.html), aquí tú eliges el nombre.

En este caso lo nombraremos index.js (para mantener la costumbre).

javascript
// index.js
console.log('Hola Mundo')

El punto y coma es opcional en JavaScript.


2. Configurar el script en package.json

Dentro de package.json, en la sección "scripts", agregamos:

json
"scripts": {
  "start": "node index.js"
}
  • "start" → nombre del script

  • "node index.js" → comando a ejecutar

La notación ./index.js o solo index.js es correcta.


3. Ejecutar el script

En la terminal:

bash
npm run start

O de forma abreviada (solo para start):

bash
npm start

Resultado:

text
> node index.js
Hola Mundo

4. Hacer cambios automáticos con Nodemon

Para no tener que reiniciar manualmente, instalamos nodemon como dependencia de desarrollo:

bash
npm i -D nodemon

En package.json verás:

json
"devDependencies": {
  "nodemon": "^2.0.16"
}

Agregamos un nuevo script:

json
"scripts": {
  "start": "node index.js",
  "server": "nodemon index.js"
}

Ejecutamos:

bash
npm run server

Ahora cada vez que guardes cambios, el servidor se reiniciará automáticamente.


Ejemplo práctico

javascript
// index.js
console.log(2 + 2)
console.log(2 + 3)

Con npm run server verás los cambios al guardar el archivo.

¿Qué es un módulo en Node.js?

Un módulo es un archivo JavaScript (o colección de archivos) que encapsula código relacionado. Los módulos te permiten organizar tu aplicación en partes reutilizables y mantener el código limpio.

Tipos de módulos en Node.js

1. Módulos nativos (core modules)

Vienen incluidos con Node.js. No necesitas instalarlos.

javascript
const fs = require('fs');     // Sistema de archivos
const http = require('http'); // Servidor HTTP
const path = require('path'); // Rutas de archivos
const os = require('os');     // Información del sistema

2. Módulos locales (propios)

Son archivos que tú creas. Cada archivo es un módulo.

javascript
// archivo: math.js
const sumar = (a, b) => a + b;
module.exports = { sumar };

// archivo: app.js
const { sumar } = require('./math.js');
console.log(sumar(5, 3)); // 8

3. Módulos de terceros (npm packages)

Los instalas mediante npm (Node Package Manager).

bash
npm install express
npm install axios
npm install lodash
javascript
const express = require('express');
const axios = require('axios');
const _ = require('lodash');

La carpeta node_modules

Cuando instalas paquetes con npm, se crea una carpeta llamada node_modules donde se guardan todas las dependencias del proyecto.

text
mi-proyecto/
├── node_modules/      # Todas las dependencias instaladas
│   ├── express/
│   ├── axios/
│   └── ...
├── package.json       # Lista de dependencias
├── package-lock.json  # Versiones exactas
└── app.js            # Tu código

El archivo package.json

Define las dependencias de tu proyecto:

json
{
  "name": "mi-app",
  "version": "1.0.0",
  "dependencies": {
    "express": "^4.18.0",
    "axios": "^1.3.0"
  }
}

Sistema de módulos en Node.js

Node.js usa dos sistemas de módulos:

CommonJS (tradicional)

javascript
// Exportar
module.exports = miFuncion;

// Importar
const miFuncion = require('./mi-modulo');

ES Modules (moderno, Node.js 12+)

javascript
// Exportar (necesitas "type": "module" en package.json)
export const miFuncion = () => {};

// Importar
import { miFuncion } from './mi-modulo.js';

Buenas prácticas

  1. No subas node_modules a Git - usa .gitignore

  2. Usa package-lock.json para versiones consistentes

  3. Instala dependencias con --save (ahora es por defecto)

  4. Distingue entre dependencies y devDependencies

    • dependencies: necesarias en producción

    • devDependencies: solo para desarrollo (testing, linting, etc.)

bash
npm install express --save-prod        # dependencies
npm install jest --save-dev           # devDependencies

Comandos útiles

bash
npm init -y                    # Crear package.json
npm install                    # Instalar todas las dependencias
npm install nombre-paquete     # Instalar un paquete
npm uninstall nombre-paquete   # Eliminar un paquete
npm update                     # Actualizar paquetes

Resumen visual

text
Tu Código → require/import → Node.js → Busca en:
                             1. Módulos nativos
                             2. Módulos locales (./archivo)
                             3. node_modules/

¿Hay algún aspecto específico que quieras que profundice más?


Módulos en Node.js - Exports y Require

Introducción

Bienvenidos a un nuevo vídeo tutorial. Estoy muy contento y feliz porque comenzaremos con nuestro curso de Node.js. Si no sabes nada de Node.js y quieres aprender paso a paso y en la práctica, este curso es para ti.

¿Qué es Node.js?
Node.js nos permite ejecutar código de JavaScript en el servidor. Hasta ahora, usabas JavaScript en el navegador para manipular el DOM, hacer eventos, etc. Con Node.js, llevamos JavaScript al servidor para crear aplicaciones web, servidores HTTP, APIs, y trabajar con bases de datos.

Requisito: Antes de comenzar, debes saber JavaScript básico (variables, funciones, arrays, bucles). Si ya lo sabes, ¡comencemos!


1. Instalación de Node.js

  1. Ve a la página oficial: nodejs.org

  2. Descarga la versión recomendada (LTS) o la actual.

  3. Instala con "next, next, next".

  4. Reinicia tu computadora.

  5. Abre la terminal (cmd) y escribe:

    bash
    node -v

    Si ves una versión (ej: v18.17.0), está instalado correctamente.


2. Primeros pasos - Ejecutando JavaScript en la terminal

Crea una carpeta llamada fundamentos y ábrela con Visual Studio Code.

Archivo app.js:

javascript
const frutas = ['platano', 'manzana', 'platano', 'pera'];

frutas.forEach(item => {
    console.count(item);
});

Ejecutar en la terminal:

bash
node app.js

Salida esperada:

text
platano: 1
manzana: 1
platano: 2
pera: 1

✅ Ya estás ejecutando JavaScript en el servidor (tu máquina local).


3. Módulos - Exportar e Importar (require y module.exports)

Cuando tu proyecto crece, es mejor separar el código en diferentes archivos (módulos). Node.js usa module.exports para exportar y require() para importar.

Ejemplo 1: Exportar un solo elemento

Archivo frutas.js:

javascript
const frutas = ['platano', 'manzana', 'platano', 'pera'];

module.exports = frutas;

Archivo app.js:

javascript
const frutero = require('./frutas');

frutero.forEach(item => {
    console.count(item);
});

Ejecutar:

bash
node app.js

⚠️ Error común: Si usas frutas.forEach en lugar de frutero.forEach, dará error porque la variable de importación se llama frutero.


4. Exportar múltiples variables (Objeto)

Si quieres exportar más de una variable, debes usar un objeto.

❌ Forma incorrecta (sobreescribe):

javascript
module.exports = frutas;
module.exports = dinero;  // Esto sobreescribe frutas

✅ Forma correcta:

Archivo frutas.js:

javascript
const frutas = ['platano', 'manzana', 'platano', 'pera'];
const dinero = 1000;

module.exports = {
    frutas: frutas,   // o solo "frutas," si se llama igual
    dinero: dinero
};

Archivo app.js (usando desestructuración):

javascript
const { frutas, dinero } = require('./frutas');

frutas.forEach(item => {
    console.count(item);
});

console.log(dinero);

Salida:

text
platano: 1
manzana: 1
platano: 2
pera: 1
1000

✅ Así importamos múltiples valores de un solo módulo.


5. Resumen rápido

ConceptoSintaxis
Exportar una variablemodule.exports = variable
Exportar múltiplesmodule.exports = { clave: valor }
Importarconst algo = require('./ruta')
Importar con desestructuraciónconst { clave1, clave2 } = require('./ruta')

Buenas prácticas

  • Usa nombres descriptivos para los módulos.

  • Agrupa funcionalidad relacionada en un solo archivo.

  • Siempre usa rutas relativas (./ para el mismo directorio).

  • La desestructuración hace el código más limpio cuando exportas múltiples valores.


Próximos pasos

En el siguiente vídeo veremos:

  • Módulos nativos de Node.js (fs, path, http)

  • Crear un servidor HTTP básico

  • NPM (Node Package Manager) y cómo instalar paquetes


Recuerda

Node.js no es un lenguaje, es un entorno de ejecución que permite correr JavaScript fuera del navegador.

¡Nos vemos en el próximo tutorial! Si te gustó, dale like y suscríbete. Todo el material está en la descripción.

*******************

Primeros pasos con Dependencias

Miniatura de la clase
1:11 / 8:03

En este vídeo estaremos viendo cómo instalar dependencias a nuestro proyecto de Node.js.

Como mencioné anteriormente, estaremos utilizando Express, así que veremos cómo instalarlo.

Paso 1: Abrir la terminal

Vamos a abrir aquí la terminal: New Terminal

Paso 2: Instalar una dependencia

La forma en la que instalas dependencias es colocando npm install o también puedes colocar únicamente npm seguido del nombre de la dependencia:

bash
npm install express

o

bash
npm i express

Tipos de dependencias

Existen dos tipos de dependencias:

TipoDescripciónSe guarda en
Dependencia de desarrolloSolo se utiliza mientras desarrollas el proyectodevDependencies
Dependencia de producciónSe requiere en el proyecto en producción para que funcione correctamentedependencies

¿Cómo saber cuál es cuál?

La experiencia te lo va a dar. Aquí va un pequeño tip:

  • Dependencia de producción (se requiere en el servidor):

    • ORM o forma de consultar la base de datos

    • Sistema de pagos

    • Autenticación

  • Dependencia de desarrollo (solo local):

    • Compilar SASS a CSS

    • Compilar JavaScript

    • Herramientas que no se ejecutan en el servidor

Una vez que publicas el proyecto, los archivos de CSS y JavaScript ya no se modifican en el servidor. Se modifican localmente, se prueban y después se vuelven a subir.

Paso 3: Instalar Express (dependencia normal)

bash
npm i express

¿De dónde vienen estos nombres?

Todas estas dependencias se descargan del sitio: npmjs.com

Allí puedes buscar paquetes. Por ejemplo:

  • Buscar librería para hashear passwords

  • Stripe para pagos

  • etc.

Consejos importantes al elegir una dependencia:

  • Revisar cuándo fue actualizada por última vez (no debe tener años)

  • Ver la cantidad de descargas

  • Leer la documentación

  • Ver ejemplos de uso

Paso 4: ¿Qué se crea al instalar una dependencia?

Al instalar una dependencia, aparecen dos cosas nuevas en tu proyecto:

1. package-lock.json

  • Es un archivo que se crea automáticamente

  • Maneja las dependencias de las dependencias (y sus dependencias)

  • Almacena ubicaciones y versiones exactas

  • ⚠️ Nunca lo modifiques - si el código no funciona, modificarlo solo empeorará las cosas

2. Carpeta node_modules

  • Aquí se colocan todas las dependencias que vamos instalando

  • Al instalar Express, aparecen muchas otras (porque Express las requiere)

  • Esta carpeta puede crecer bastante (200-500 MB)

Tip: Puedes eliminar la carpeta node_modules para ahorrar espacio. Si vuelves a ejecutar npm i, se reinstalarán todas las dependencias definidas en package.json.

Paso 5: Instalar una dependencia de desarrollo

Se instala de dos formas diferentes:

bash
npm i --save-dev nombre-dependencia

o

bash
npm i -D nombre-dependencia

Cualquiera de las dos la coloca como una dependencia de desarrollo en devDependencies.

¿Qué hace la sección devDependencies?

Cuando llevas el proyecto a producción, el hosting:

  • Lee el package.json

  • Ignora las dependencias en devDependencies

  • Solo instala las que están bajo dependencies

⚠️ Punto importante: Formato JSON

El package.json es un archivo JSON, por lo tanto:

  • Las comillas dobles son obligatorias (no comillas sencillas)

  • Las comas deben ser correctas - si eliminas una sección, elimina también la coma

Ejemplo de error:

json
{
  "dependencies": { "express": "^4.18.0" },  // ← esta coma sobra si no hay más secciones
}

Correcto:

json
{
  "dependencies": { "express": "^4.18.0" }
}

Resumen final

  • Express es una dependencia normal (producción)

  • La vamos a mantener como dependencies

  • En el próximo vídeo veremos cómo ejecutar el código de Node.js

Ejemplo con un servidor (más realista)

Si tu código tiene un servidor que no termina solo:

1. index.js con servidor simple:

javascript
const http = require('http');

const server = http.createServer((req, res) => {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hola Mundo!');
});

server.listen(3000, () => {
    console.log('Servidor corriendo en http://localhost:3000');
});

2. Ejecutar:

bash
node index.js

Salida:

text
Servidor corriendo en http://localhost:3000

El cursor se queda fijo porque el servidor sigue corriendo.

3. Hacer un cambio en el código (por ejemplo, cambiar el mensaje):

javascript
res.end('Hola Mundo! - Cambio nuevo');

4. Detener con Ctrl + C:

text
^C

5. Volver a ejecutar:

bash
node index.js
text
Servidor corriendo en http://localhost:3000

El cambio ya está activo.


Resumen rápido

AcciónComando/Tecla
Iniciar appnode index.js
Detener app (si está corriendo)Ctrl + C
Volver a iniciarnode index.js

Comentarios

Entradas más populares de este blog

Cómo Iniciar un Proyecto Node.js

5-Express--Curso de Node.js#05 Introducción a Express.js

8-Template Engines