Clase · 30 minutos Frontend moderno

Node.js, TypeScript y Vite.

Tres herramientas que probablemente ya escucharon nombrar y que van a aparecer juntas durante toda la carrera.

Tema
El stack base del frontend moderno
Formato
Charla + demo en vivo
Duración
30 min · 22 slides

En una frase

Node es el motor,
TypeScript es el control de calidad,
Vite es el armador del proyecto.

Las tres juntas son la base del desarrollo frontend moderno. Hoy vemos qué hace cada una y cómo encajan.

01 · Resumen Node.js · TypeScript · Vite

Agenda

Cómo se distribuyen los 30 minutos.

Tiempo Bloque Modalidad
0:00 — 2:00 Introducción y objetivos Slide
2:00 — 9:00 Node.js Explicación + terminal
9:00 — 16:00 TypeScript Explicación + ejemplo corto
16:00 — 26:00 Vite + demo integradora Demo en vivo
26:00 — 28:00 Bonus: pre-commit y tests Mención breve
28:00 — 30:00 Cierre y preguntas Conversación
02 · Agenda 30 min · 6 bloques

01 / runtime

Node.js

El motor que hace correr JavaScript fuera del navegador, y con él, todas las herramientas con las que armamos el frontend.

7 min · introducción + terminal

Definición

Un runtime de JavaScript
fuera del navegador.

Motor

V8 de Chrome

El mismo intérprete que ejecuta JS en el navegador, empaquetado para correr en el sistema operativo.

Modelo

Event-driven, non-blocking I/O

Asíncrono y orientado a eventos. Eficiente para muchas conexiones simultáneas: APIs, servicios, CLIs.

Año

2009 — Ryan Dahl

Antes de Node, JavaScript solo corría en el navegador. Hoy es la base del tooling de frontend.

03 · Node.js 1 / 5

Para qué nos sirve

Para todo lo que no es
“mostrar una página”.

  • Servidores y APIs — Express, Fastify, Next, etc.
  • Herramientas de línea de comandos — desde un CLI propio hasta scripts de mantenimiento.
  • Automatización y scripting — leer archivos, mover datos, integraciones puntuales.
  • Tooling de frontend — bundlers, linters, formatters, test runners.
  • Build y deploy — los pipelines que transforman tu código antes de subirlo.
  • Para nosotros hoy — correr Vite, ejecutar TypeScript, instalar dependencias.

“Aunque hagamos frontend, vamos a usar Node todo el tiempo para correr las herramientas.”

03 · Node.js 2 / 5

npm

El gestor de paquetes
más grande del mundo.

2.4M+

paquetes publicados

npm viene incluido cuando instalás Node. Es una biblioteca gigante de código que otra gente escribió y que vos podés usar en tu proyecto con un solo comando.

npm install

Baja todas las dependencias declaradas en package.json a node_modules/.

npm install <paquete>

Agrega una dependencia nueva al proyecto y la guarda en package.json.

npm run <script>

Corre uno de los scripts definidos en el manifiesto (por ejemplo, npm run dev).

03 · Node.js 3 / 5

package.json

El manifiesto del proyecto.

{
  "name": "mi-proyecto",
  "version": "1.0.0",
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview"
  },
  "dependencies": {
    "react": "^18.3.1"
  },
  "devDependencies": {
    "vite": "^5.4.0",
    "typescript": "^5.5.0"
  }
}
  • scripts — atajos que se corren con npm run.
  • dependencies — paquetes necesarios en producción.
  • devDependencies — herramientas solo para desarrollar.
  • node_modules/ — donde se descargan; va en .gitignore.
03 · Node.js 4 / 5

Comandos esenciales

Lo mínimo para arrancar.

~ / proyectos / mi-proyecto
# Ver versiones instaladas $ node --version v22.11.0 $ npm --version 10.9.0 # Iniciar un proyecto desde cero $ npm init -y ✔ wrote package.json # Instalar una dependencia $ npm install lodash added 1 package in 2s # Correr un script del package.json $ npm run dev
03 · Node.js 5 / 5

02 / lenguaje

TypeScript

JavaScript con tipos. El editor te avisa antes de correr el código, y la firma de cada función pasa a ser documentación viva.

7 min · explicación + ejemplo corto

Definición

JavaScript + tipos,
desarrollado por Microsoft.

Superset

Extiende JavaScript

Todo el JS válido es TS válido. Le agrega un sistema de tipos estáticos opcional sin romper lo existente.

Compila a JS

Se transpila antes de correr

El compilador tsc chequea tipos y emite JavaScript plano que corre donde corra JS.

Configuración

tsconfig.json

Le dice al compilador qué versión de JS emitir, qué nivel de strictness aplicar, y dónde están los archivos.

04 · TypeScript 1 / 5

El problema

JavaScript es demasiado permisivo.

// JavaScript
function sumar(a, b) {
  return a + b;
}

sumar("2", 3);  // devuelve "23"
⚠ El error lo descubrís cuando ya está en producción y un usuario te avisa.
04 · TypeScript 2 / 5

La solución

TypeScript te avisa antes de correr.

// TypeScript
function sumar(a: number, b: number): number {
  return a + b;
}

sumar("2", 3);  // ❌ Error: el editor lo marca al instante
✓ Tipado estático: chequea los tipos en tiempo de compilación, no en tiempo de ejecución.
04 · TypeScript 3 / 5

Ventajas concretas

Tres razones para escribir TypeScript.

01

Errores antes de correr

Los ves en el editor mientras escribís, no en producción. Menos surprise bugs y menos vueltas con el debugger.

02

Autocompletado real

El editor sabe qué métodos tiene cada cosa. IntelliSense pasa de adivinar a mostrarte exactamente lo que existe.

03

Documentación viva

La firma de la función te dice qué espera y qué devuelve. No hace falta abrir la implementación para usarla.

“El tipado da trazabilidad: sabés qué espera y qué devuelve cada función sin tener que leerla entera.”

04 · TypeScript 4 / 5

Vocabulario

Cinco conceptos que vale
la pena conocer.

// 1 · Tipos primitivos                       // 3 · opcional con `?`
const nombre: string = "Ana";          interface Usuario {
const edad:   number = 30;             id: number;
const activo: boolean = true;        email: string;
                                            apodo?: string;
// 4 · type — alias y uniones             }
type Estado = "loading" | "ok" | "error";

// 5 · firmas: qué espera y qué devuelve
function saludar(u: Usuario): string {
  return `Hola ${u.apodo ?? u.email}`;
}
04 · TypeScript 5 / 5

03 / build tool

Vite

El armador del proyecto. Dev server casi instantáneo, HMR ultrarrápido, y un build de producción optimizado con Rollup.

10 min · explicación + demo en vivo

Definición

Build tool y dev server moderno
para proyectos frontend.

Autor

Evan You

El mismo creador de Vue. “Vite” significa “rápido” en francés — y es literal.

En desarrollo

ES modules nativos

El navegador resuelve los imports a demanda. Arranque casi instantáneo, sin bundlear todo el proyecto.

En producción

Build con Rollup

Empaqueta el código optimizado, hace tree-shaking y emite los assets listos para servir.

TypeScript JSX / TSX CSS modules React Vue Svelte — soportados de forma nativa, sin configuración extra.
05 · Vite 1 / 5

Comparación

Por qué Vite y no Webpack.

Webpack · clásico

Bundlea todo el proyecto al iniciar

~30 s

Cada vez que arrancás el dev server, procesa todo el código fuente y todas las dependencias antes de mostrar nada en pantalla.

En cambios grandes vuelve a rebundlear. Proyectos chicos lo aguantan; proyectos medianos empiezan a sentirse lentos.

Vite · moderno

Sirve módulos a demanda con ESM

~50 ms

El navegador pide los archivos que necesita y Vite los transforma solo cuando se piden. No procesa lo que no usás.

HMR ultrarrápido: cambia un archivo y el módulo se reemplaza en caliente, sin perder el estado de la página.

05 · Vite 2 / 5

Demo en vivo

Un proyecto desde cero,
en menos de diez minutos.

terminal — demo
# 1 · Crear el proyecto $ npm create vite@latest mi-proyecto \ -- --template vanilla-ts # 2 · Instalar dependencias $ cd mi-proyecto $ npm install # 3 · Levantar el dev server $ npm run dev VITE v5.4.0 ready in 412 ms ➜ Local: http://localhost:5173/
  1. 04
    Abrir el editor y revisar la estructura: index.html, src/, tsconfig.json, vite.config.ts.
  2. 05
    Mirar los scripts en package.json: dev, build, preview.
  3. 06
    Editar src/main.ts y guardar — el cambio aparece sin recargar la página. Eso es HMR.
  4. 07
    Provocar un error de tipos a propósito (pasar un string donde espera number) — el editor lo marca y el build falla.
  5. 08
    Arreglarlo, correr npm run build — se genera la carpeta dist/, lista para subir.
05 · Vite 3 / 5

Lo que pasa al guardar

HMR en desarrollo,
TypeScript en el build.

npm run dev

Cambio aplicado al instante

Hot Module Replacement: Vite reemplaza solo el módulo que tocaste. La página no se recarga, el estado se conserva.

// src/main.ts — cambiás esto…
const titulo = "Hola clase";
// …guardás, y aparece en el navegador.

npm run build

TypeScript te protege antes de subir

Si hay un error de tipos, el build falla. No podés deployar código roto sin darte cuenta.

function saludar(nombre: string): string {
  return `Hola ${nombre}`;
}
saludar(42);
// error TS2345: Argument of type 'number'
// is not assignable to parameter 'string'.

“Con un solo comando tenemos Node corriendo el server, Vite haciendo el bundle y TypeScript validando los tipos.”

05 · Vite 4 / 5

Bonus

Dos cosas que les van a aparecer
y vale la pena investigar.

Pre-commit hooks

husky + lint-staged

Validaciones que se corren automáticamente antes de cada commit: lint, formato, tests. Si algo falla, el commit no se hace.

Ayuda a no romper la rama principal y a mantener un estilo de código consistente entre todo el equipo.

Testing en Node

node:test · vitest

node:test viene incluido desde Node 18, sin instalar nada. vitest se integra naturalmente con Vite y comparte su configuración.

Para más adelante: empezar pequeño, una función pura con tres casos.

06 · Bonus 1 / 1

Cierre

Node es el motor que hace correr todo,
TypeScript es el control de calidad
que evita errores tontos,
y Vite es el armador del proyecto.

Tarea sugerida. Crear un proyecto Vite con TypeScript, escribir una función con tipos, romperla a propósito pasando algo del tipo equivocado, y ver cómo reacciona el editor y el build. Es la mejor forma de entenderlo.

07 · Cierre ¿Preguntas?