Skip to content

platzi/curso-nodejs-avanzado

Repository files navigation

Curso Avanzado de Node.js Nivel Avanzado

Sección 1: Patrones de diseño en Node.js

Clase 1: Introducción a los patrones de diseño en Node.js (6 min)

  • ¿Qué son los patrones de diseño y por qué importan en Node.js?
  • Patrones comunes en programación
  • Contexto específico de Node.js

Clase 2: Singleton y Factory Pattern (7 min)

  • Explicación y casos de uso de Singleton
  • El módulo Process, un singleton en el core de Node.js
  • Factory, usado en la mayoria de ORMs en Node.js
  • Implementación práctica de Factory Pattern en Node.js

Clase 3: Observer Pattern (7 min)

  • Explicación y uso del patrón Observer
  • Implementación en Node.js con EventEmitter
  • Casos de uso en el core
  • Implementación práctica

Clase 4: Middleware Pattern (7 min)

  • ¿Qué es el Middleware Pattern?
  • Importancia de este patrón en frameworks web de Node.js
  • Creación de middlewares personalizados

Clase 5: Decorator e inyección de Dependencias (7 min)

  • Explicación y uso del patrón Decorator
  • Uso de Decorator por frameworks de templates en Node.js
  • Next.js un uso de inyección de dependencias
  • Ejemplo práctico

Sección 2: Flujo de Datos con Node.js

Clase 6: Buffers y Streams (5 min)

  • ¿Qué es un buffer y cómo funciona?
  • Tipos de streams
  • Streams vs. lectura/escritura tradicional

Clase 7: Manejo avanzado de Streams (7 min)

  • Piping y composición de streams
  • Uso de stream.pipeline()
  • Async Iterables y su uso en streams
  • Caso práctico: procesamiento de archivos grandes

Clase 8: Entendiendo cómo se procesa la asincronía en Node.js (8 min)

  • Event Loop en profundidad
  • Procesos internos
  • El rol de Liubv
  • Timers y Microtasks

Clase 9: Patrones de paralelismo (8 min)

  • Parallel vs Concurrent Execution
  • Implementando procesamiento paralelo usando promesas y generators

Sección 3: Debugging y Diagnóstico en Node.js

Clase 10: Herramientas de Debugging (7 min)

  • node inspect y DevTools Debugger
  • Debugging con VSCode
  • console.trace() y console.time()

Clase 11: Uso de Diagnostic Channels (7 min)

  • ¿Qué son los Diagnostic Channels?
  • Usando diagnostic channels
  • Casos de uso avanzados

Clase 12: Observabilidad y rendimiento (8 min)

  • El costo de la observabilidad
  • V8 metrics
  • Herramientas: clinic.js, 0x y NSolid
  • Estrategias de profiling

Clase 13: Manejo de errores y Logging avanzado (8 min)

  • Handlers globales process.on('uncaughtException') y process.on('unhandledRejection')
  • Por qué logging puede ser un bottleneck?
  • pino para logging eficiente
  • Integración con sistemas de monitoreo

Sección 4: Performance en Node.js

Clase 14: Evitando bloqueos en el Event Loop (7 min)

  • Diagnóstico de bloqueos en el event loop
  • setImmediate() y process.nextTick()
  • Optimización de código sincrónico

Clase 15: Manejo de Memory Leaks (7 min)

  • Identificación y prevención de memory leaks
  • Heap Snapshots y memoryUsage()
  • Debugging de un memory leak

Clase 16: Worker Threads y Child Processes (8 min)

  • Diferencias y casos de uso
  • Implementación práctica

Clase 17: Optimización avanzada de rendimiento (8 min)

  • Caching (LRU Cache)
  • Conociendo los límites de Node
  • Cuándo escalar un proceso de Node?

Sección 5: Creando CLIs con Node.js

Clase 18: Introducción a CLI (7 min)

  • ¿Qué es un CLI?
  • Node.js REPL
  • process.argv y readline
  • usando la consola con Node.js

Clase 19: Uso de minimist (7 min)

  • Definiendo comandos y opciones
  • Flags y argumentos
  • diseñando nuestro comando

Clase 20: Explorando herramientas para CLI (8 min)

  • Uso de colorette para estilizar salidas en CLI
  • Creación de prompts interactivos con inquirer
  • Caso práctico: CLI que hace consultas y chatea con Gemini

Clase 21: Publicación de CLIs como paquetes npm y uso local (8 min)

  • Configuración de package.json
  • Uso local con npm link
  • Publicación en NPM
  • usandola con NPX

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published