Compartir

El gran libro de Node.js

Sinopsis del producto

Node.js ha revolucionado el desarrollo de JavaScript en el lado del servidor, combinando un rendimiento nsuperior con un stack tecnológico unificado y un vasto ecosistema de paquetes. Este entorno de ejecución npermite a los desarrolladores crear aplicaciones robustas, escalables y altamente versátiles, adaptables a nuna amplia gama de casos de uso. El gran libro de Node.js es su guía completa para dominar este potente nentorno de desarrollo: le guiará desde los conceptos más básicos hasta los temas más avanzados, y nadquirirá las habilidades necesarias para aprovechar todo el potencial de Node.js en sus proyectos. nEl viaje comienza con una sólida comprensión de los fundamentos de Node.js y un repaso de los principios nesenciales de JavaScript. A medida que avance, se sumergirá en la creación de aplicaciones web modernas nutilizando Node.js, Express. njs y MongoDB, explorará temas avanzados como la programación asíncrona, la gestión de paquetes con nnpm, la implementación de patrones orientados a eventos para servidores HTTP, API RESTful, JSON Web nTokens y mucho más. nEn los capítulos finales, este libro le llevará a través del proceso completo de despliegue, presentando nestrategias tanto para configuraciones bare metal como para entornos virtualizados y contenedores con nDocker. Además, descubrirá cómo gestionar procesos de manera eficiente con Process Manager 2 (PM2), nasegurando que sus aplicaciones Node.js funcionen de manera óptima. nAl finalizar esta obra, estará equipado con todo lo necesario para crear, probar y desplegar aplicaciones nweb con Node.js, llevando sus habilidades de desarrollo a nuevos niveles de competencia y confianza. n• Construirá aplicaciones Node.js sólidas y seguras desde cero. n• Descubrirá cómo consumir y publicar paquetes npm de manera efectiva. n• Dominará patrones para refactorizar y evolucionar sus aplicaciones con el tiempo. n• Obtendrá una comprensión profunda de los principios esenciales del desarrollo web, incluyendo nHTTP, diseño de API RESTful, JWT, autenticación, autorizacióny manejo de errores. n• Implementará estrategias de testing robustas para mejorar la calidad y fiabilidad de sus naplicaciones. n• Desplegará sus aplicaciones Node.js en entornos de producción utilizando Docker y PM2. nGracias a esta lectura llevará sus habilidades de desarrollo al siguiente nivel. Con El gran libro de Node.js nestará plenamente preparado para enfrentar los desafíos del desarrollo moderno y desplegar aplicaciones nque marquen la diferencia en el competitivo mundo digital. n nCONTENIDO nPrefacio ...................................... XI nPARTE 1 nRESUMEN DEL LENGUAJE nJAVASCRIPT Y NODE.JS .............. 1 nCAPÍTULO 1 nIntroducción a Node.js ............... 3 n1.1. ¿Por qué es Node.js tan popular? ....................... 4 n1.1.1. Ligero y rápido ................ 4 n1.1.2. Multiplataforma y multipropósito ................... 5 n1.1.3. Curva de aprendizaje fácil ................................ 5 n1.1.4. Ecosistema ...................... 6 n1.1.5. Impulsado por la comunidad ........................... 7 n1.2. La arquitectura de un solo hilo de Node.js ......... 8 n1.2.1. La E/S necesita hacerse de manera diferente .. 8 n1.2.2. E/S no bloqueante ......... 9 n1.2.3. Profundizando en el bucle de eventos ........... 11 n1.3. Versiones de Node.js ............ 12 n1.3.1. Versionado semántico (SemVer) ................... 12 n1.3.2. Detalles de la versión ..... 13 n1.3.3. Calendario de lanzamientos ........................... 15 n1.4. Resumen ................................ 17 n1.4.1. Lectura adicional ............ 18 nCAPÍTULO 2 nConfigurando el entorno de desarrollo ................... 19 n2.1. Requisitos técnicos ............... 20 n2.2. Instalando Node.js en macOS, Windows y Linux n.............. 20 n2.2.1. macOS ............................. 21 n2.2.2. Windows .......................... 22 n2.2.3. Linux ................................. 22 n2.2.4. Otros entornos ................ 23 n2.2.5. Verificando la instalación ............................... 23 n2.3. Gestionando las versiones de Node.js .............. 24 n2.4. Administrando Node.js usando nvm ................. 25 n2.4.1. Instalación y uso de versiones ....................... 26 n n2.4.2. Usando un archivo .nvmrc ............................. 27 n2.5. REPL de Node.js .................... 29 n2.6. Interactuando con JavaScript usando Chrome nDevTools ......................................... 31 n2.6.1. El panel Console ............. 32 n2.6.2. El panel Network ............. 32 n2.6.3. Usando Chrome DevTools .............................. 33 n2.7. Resumen ................................ 34 n2.7.1. Lectura adicional ............ 35 nCAPÍTULO 3 nFundamentos de JavaScript ...... 37 n3.1. Requisitos técnicos ............... 38 n3.2. JavaScript es un lenguaje poderoso .................. 38 n3.3. Entendiendo la versión TC39 ............................ 40 n3.3.1. Entendiendo la versión ECMAScript .............. 40 n3.3.2. ¿Qué se incluirá en la próxima versión de nJavaScript? .. 41 n3.3.3. ¿Qué no se incluye en la especificación de nJavaScript? ..... 41 n3.4. Explorando la documentación de JavaScript .... 42 n3.5. Linting del código JavaScript ............................. 43 n3.6. Comentando el código JavaScript ..................... 44 n3.6.1. Uso de JSDoc .................. 45 n3.7. Imprimiendo valores y depurando de una forma nágil ....... 46 n3.8. Variables y constantes .......... 47 n3.8.1. Convenciones de nomenclatura .................... 48 n3.8.2. let vs const ...................... 48 n3.9. Entendiendo los tipos de datos ........................ 50 n3.9.1. undefined ........................ 50 n3.9.2. object ............................... 50 n3.9.3. boolean ............................ 51 n3.9.4. number ............................ 51 n3.9.5. string ................................ 51 n3.9.6. function ........................... 51 n3.9.7. bigint ................................ 52 n3.9.8. symbol ............................. 52 n n3.10. Explorando números ........... 52 n3.10.1. Operadores aritméticos ............................... 53 n3.10.2. Operadores de asignación ........................... 53 n3.10.3. Métodos útiles .............. 54 n3.10.4. El objeto Math ............... 55 n3.10.5. Otros números .............. 56 n3.11. Explorando el objeto Dates ............................. 56 n3.12. Declaraciones condicionales ........................... 59 n3.12.1. Operadores de comparación matemática ... 59 n3.12.2. Operadores de igualdad ............................... 59 n3.12.3. Operadores lógicos ....... 60 n3.12.4. El operador NOT (!) ....... 60 n3.12.5. Igualdad en JavaScript ................................. 61 n3.12.6. El operador de coalescencia nula (??) ......... 63 n3.12.7. La declaración if ........... 63 n3.12.8. La declaración switch ... 65 n3.12.9. Operador ternario ......... 66 n3.13. Entendiendo los bucles ....... 68 n3.13.1. while .............................. 68 n3.13.2. do...while ....................... 68 n3.13.3. for ................................... 69 n3.14. Uso de cadenas de texto en JavaScript n................................. 70 n3.14.1. Métodos importantes ... 71 n3.15. Explorando arrays ............... 73 n3.15.1. Operaciones básicas .... 74 n3.15.2. Iterando sobre un array ............................... 77 n3.15.3. Filtrado .......................... 79 n3.15.4. Desestructuración ........ 82 n3.15.5. Set .................................. 83 n3.16. Uso de objetos en JavaScript .......................... 84 n3.16.1. Operaciones básicas .... 84 n3.16.2. Iteración ........................ 87 n3.16.3. Shallow copy versus deep copy ................... 89 n3.16.4. Fusionando objetos ...... 92 n3.16.5. Desestructuración ........ 93 n3.16.6. Encadenamiento opcional (?.) ..................... 93 n3.17. Explorando las funciones ... 95 n3.17.1. Los fundamentos ......... 95 n3.17.2. Funciones flecha (arrow functions) ............. 97 n3.17.3. Closures ........................ 100 n3.18. Creando y administrando clases ................... 102 n3.18.1. Creando una clase ....... 103 n3.18.2. Métodos de clase ......... 103 n3.18.3. Extendiendo clases ...... 104 n3.18.4. Métodos estáticos ........ 105 n3.18.5. Getters y setters ........... 106 n3.19. Resumen ............................. 107 n3.19.1. Lectura adicional .......... 108 nCAPÍTULO 4 nProgramación asíncrona ............ 109 n4.1. Requisitos técnicos ............... 110 n4.2. Programación asíncrona en JavaScript ........... 110 n4.2.1. La mentalidad asíncrona .............................. 111 n4.2.2. Métodos asíncronos en JavaScript ............... 112 n4.3. Entendiendo los callbacks .... 113 n4.3.1. Temporizadores e intervalos ....................... 115 n4.3.2. Error first en callbacks ... 118 n4.3.3. Infierno de callbacks ...... 120 n n4.4. Dominando las promesas ..... 121 n4.4.1. Uso de promesas ............ 122 n4.4.2. Creando promesas ......... 124 n4.4.3. Infierno de los callbacks con promesas ....... 125 n4.4.4. Promesas en paralelo ..... 127 n4.4.5. Manejo de errores ........... 130 n4.4.6. Encadenamiento de promesas .................... 132 n4.5. Uso de async y await para manejar código nasíncrono ............ 133 n4.5.1. Async ................................ 133 n4.5.2. Await ................................ 134 n4.6. Funciones autoejecutables (IIFE) .................... 136 n4.7. Resumen ................................ 137 n4.7.1. Lectura adicional ............ 137 nPARTE 2 nECOSISTEMA Y ARQUITECTURA DE NODE.JS ...... 139 nCAPÍTULO 5 nLibrerías del core de Node.js ..... 141 n5.1. Requisitos técnicos ............... 142 n5.2. Modularizando su código (ESM versus CJS) .... 142 n5.2.1. CommonJS (CJS) ............. 144 n5.2.2. ECMAScript Modules (ESM) ......................... 148 n5.2.3. Entendiendo cómo funciona la ninteroperabilidad .... 151 n5.3. Funcionamiento de las core libraries .............. 154 n5.3.1. La estructura de la librería ........................... 154 n5.3.2. Índice de estabilidad ...... 158 n5.3.3. Otras librerías del core ... 159 n5.3.4. Command-line options .... 161 n5.4. Resumen ................................ 163 n5.4.1. Lectura adicional ............ 164 nCAPÍTULO 6 nLibrerías de terceros y npm ....... 165 n6.1. Requisitos técnicos ............... 166 n6.2. Administrando su aplicación con el package.json n.... 166 n6.3. Elegir las dependencias correctas para su nproyecto ........... 169 n6.3.1. Riesgos ............................ 170 n6.3.2. Buenos criterios .............. 172 n6.4. Instalación de dependencias ........................... 177 n6.4.1. Local o global .................. 177 n6.4.2. Dependencia o dependencia de desarrollo . 178 n6.4.3. Añadiendo una nueva dependencia ............ 179 n6.4.4. Instalando todas las dependencias .............. 182 n6.4.5. Eliminando dependencias ............................ 182 n6.5. Entendiendo el packagelock.json .................... 183 n6.6. Gestionando versiones de las dependencias .. 185 n6.6.1. Dependencias desactualizadas .................... 185 n6.7. Construyendo JavaScript isomórfico ............... 186 n6.8. Usando scripts de npm ......... 187 n6.9. Ejecutando paquetes directamente con npx .. 189 n6.10. Alternativas a npm .............. 192 n6.10.1. Yarn ............................... 192 n6.10.2. PNPM ............................ 193 n6.10.3. Verdaccio ...................... 193 n6.11. Publicando nuestro primer paquete ............. 193 n n6.11.1. Registros ....................... 194 n6.11.2. Cuenta de npm ............. 194 n6.11.3. Preparar el paquete ..... 194 n6.11.4. Revisando el paquete .. 197 n6.11.5. Publicar el paquete ...... 199 n6.11.6. Nombres de paquetes ............................... 200 n6.11.7. Lanzar nuevas versiones ............................ 201 n6.11.8. Prevenir la publicación accidental ............. 203 n6.11.9. Mejores prácticas ......... 203 n6.12. Resumen .............................. 204 n6.12.1. Lectura adicional .......... 205 nCAPÍTULO 7 nArquitectura orientada a eventos .......................... 207 n7.1. Requisitos técnicos ............... 208 n7.2. Introducción a los eventos .... 208 n7.3. Observando cambios en los archivos .............. 209 n7.4. La librería emisora de eventos de Node.js ...... 211 n7.4.1. Previniendo el caos organizando los nsuscriptores .... 213 n7.4.2. Eliminando suscriptores cuando no son nnecesarios .................................. 214 n7.5. Su primer servidor HTTP ........ 214 n7.6. Agregando una interfaz de eventos a sus módulos n................. 216 n7.7. Resumen ................................ 218 n7.7.1. Lectura adicional ............ 219 nCAPÍTULO 8 nTesting en Node.js ...................... 221 n8.1. Requisitos técnicos ............... 222 n8.2. ¿Por qué es importante el testing? ................. 222 n8.2.1. El testing es una cultura compleja ............... 223 n8.2.2. El testing es una actividad de equipo .......... 223 n8.2.3. Aproveche ahora ............. 224 n8.3. Enfoque y filosofía del testing ......................... 226 n8.3.1. El testing es ampliamente utilizado en el mundo n........................................ 226 n8.3.2. La pirámide de test ........ 228 n8.4. ¿Cómo debo probar mi código? n......................................... 230 n8.4.1. Frameworks y librerías ... 230 n8.4.2. Nuestro primer test ........ 231 n8.4.3. Principios y objetivos del testing ................. 232 n8.5. Escribiendo nuestro primer test suite ............ 234 n8.5.1. Módulo Utils .................... 234 n8.5.2. La librería node:test ....... 235 n8.5.3. Usando la librería Jest .... 238 n8.6. Dominando las herramientas de test coverage .... n242 n8.6.1. Configuración .................. 242 n8.6.2. Ejecutando los test ......... 243 n8.6.3. Informe de Node.js ......... 244 n8.6.4. Informe de Jest ............... 245 n8.6.5. Informes interactivos ...... 246 n8.7. TDD en acción ....................... 247 n8.8. Resumen ................................ 251 n8.8.1. Lectura adicional ............ 252 nPARTE 3 n nFUNDAMENTOS DE UNA APLICACIÓN WEB .......... 253 nCAPÍTULO 9 nManejo de HTTP y REST API ....... 255 n9.1. Requisitos técnicos ............... 256 n9.2. Cómo funciona Internet por debajo ............... 256 n9.2.1. Historia de Internet ......... 257 n9.2.2. Infraestructura de Internet .......................... 258 n9.2.3. Request for Comments (RFC) n.......................................... 259 n9.2.4. Otros RFC ......................... 262 n9.3. HTTP – Relación servidor y cliente .................. 263 n9.3.1. Petición y respuesta ....... 263 n9.3.2. Renderizado del lado del servidor (server nrender) ....... 266 n9.3.3. Single Page Applications (SPA) .................... 267 n9.4. Dominando HTTP ................... 269 n9.4.1. Encabezados HTTP ......... 269 n9.4.2. Códigos de estado .......... 272 n9.4.3. Métodos de petición ....... 275 n9.4.4. Cargas útiles de HTTP ..... 277 n9.4.5. Versiones de HTTP .......... 277 n9.5. Uso de URL en aplicaciones web .................... 278 n9.6. REST API en resumen ............ 280 n9.7. Explorando la especificación JSON .................. 284 n9.8. Depuración de peticiones HTTP ...................... 285 n9.9. Resumen ................................ 286 n9.9.1. Lectura adicional ............ 287 nCAPÍTULO 10 nDesarrollando aplicaciones web con Express n........................ 289 n10.1. Requisitos técnicos ............. 290 n10.2. Familiarizándonos con la librería Express ..... 290 n10.2.1. Instalando Express ....... 291 n10.2.2. Hola Mundo ................... 291 n10.2.3. Usando el generador .... 293 n10.2.4. Depuración .................... 295 n10.3. Entendiendo los motores de plantillas ......... 297 n10.3.1. Elegir un motor de plantillas ...................... 297 n10.3.2. Renderizando una plantilla ........................ 297 n10.3.3. Entendiendo el proceso . 300 n10.4. Dominando las peticiones .. 301 n10.4.1. Métodos HTTP .............. 302 n10.4.2. Rutas ............................. 303 n10.4.3. Controladores ............... 307 n10.5. Dominando las respuestas n..................................... 309 n10.5.1. Gestión de cabeceras .. 309 n10.5.2. Códigos de estado ........ 311 n10.5.3. Redirecciones ............... 312 n10.5.4. Enviando datos ............. 313 n10.5.5. Enviando archivos ........ 315 n10.6. Usando el patrón de middleware ................. 316 n10.6.1. Entendiendo el alcance .............................. 320 n10.6.2. Anatomía del middleware ......................... 320 n10.6.3. Agregando middleware a la aplicación ...... 323 n10.6.4. Agregando middleware a una ruta ............ 324 n10.6.5. Middleware común utilizado en Express ... 325 n10.7. Uso de middleware de terceros .................... 327 n n10.8. Resumen ............................. 328 n10.8.1. Lectura adicional .......... 329 nPARTE 4 nCONSTRUYENDO APLICACIONES WEB SÓLIDAS CON nNODE.JS ............................. 331 nCAPÍTULO 11 nConstruyendo una aplicación web desde cero n.......................... 333 n11.1. Requisitos técnicos ............. 334 n11.2. El inicio del proyecto ........... 334 n11.2.1. El objetivo del proyecto ............................. 334 n11.2.2. Comenzando con el primer paso ............... 336 n11.3. Construyendo una REST API .......................... 337 n11.3.1. Añadiendo las rutas ...... 338 n11.3.2. Añadiendo los stores .... 340 n11.3.3. Añadiendo los archivos estáticos ............... 349 n11.3.4. Añadiendo las plantillas ............................. 350 n11.4. Testing con supertest .......... 351 n11.4.1. Añadiendo stores al servidor ..................... 352 n11.4.2. Creando utilidades de test ......................... 354 n11.4.3. Añadiendo test al servidor ......................... 357 n11.5. Revisando el resultado final del proyecto ..... 367 n11.5.1. La página Acerca de ..... 367 n11.5.2. ¡Celebremos! ................. 371 n11.5.3. Próximos pasos ............. 372 n11.6. Resumen .............................. 372 nCAPÍTULO 12 nPersistencia de datos con MongoDB ..................... 373 n12.1. Requisitos técnicos ............. 374 n12.2. ¿Qué es MongoDB? ............. 374 n12.2.1. Versiones ....................... 375 n12.3. Configuración de MongoDB n....................................... 376 n12.3.1. Instalación de Docker ... 376 n12.3.2. Ejecutando MongoDB en un contenedor .. 377 n12.3.3. Ejecutando MongoDB con Docker Compose n................. 379 n12.3.4. Agregando comandos Docker a package.json n.............. 381 n12.3.5. Conectándose a MongoDB ........................ 382 n12.3.6. Otras formas de instalar MongoDB ........... 383 n12.4. Cómo usar secretos en Node.js n......................................... 383 n12.4.1. Variables de entorno .... 384 n12.4.2. El archivo .env .............. 385 n12.4.3. dotenv ........................... 385 n12.5. Usando un ODM –Mongoose ....................... 386 n12.6. Migrando una aplicación web a MongoDB ... 387 n12.6.1. Instalando dependencias ........................... 388 n12.6.2 Administrando secretos .. 388 n12.6.3. Migrando la capa de datos ........................ 391 n12.7. Probando nuestra capa de integración con nMongoDB ....... 396 n12.7.1. Actualizar las utilidades ............................. 396 n12.7.2. Refactorizando el test suite ....................... 398 n12.7.3. Algunos test deben cambiar ...................... 400 n12.7.4. Verificando la cobertura ............................ 402 n n12.8. Resumen ............................. 407 n12.8.1. Lectura adicional .......... 408 nCAPÍTULO 13 nAutenticación y autorización de usuarios .............. 411 n13.1. Requisitos técnicos ............. 412 n13.2. Entendiendo la autenticación y la autorización nmoderna ........................................ 412 n13.2.1. Autenticación ................ 413 n13.2.2. Autorización .................. 413 n13.3. JWT en pocas palabras ....... 415 n13.3.1. El proceso ...................... 416 n13.3.2. La teoría ........................ 417 n13.3.3. Criptografía 101 ........... 417 n13.3.4. Estructura de JWT ......... 420 n13.3.5. JWT.io ............................ 421 n13.4. Entendiendo los fundamentos de Passport.js n......... 422 n13.5. Agregando autenticación y autorización a nnuestra aplicación web ............................... 423 n13.5.1. Descargando el proyecto base ................... 423 n13.5.2. Configuración ................ 423 n13.5.3. Ejecute los test ............. 424 n13.5.4. Los cambios en la UI .... 426 n13.5.5. Dependencias añadidas ............................. 430 n13.5.6. Cambios en el frontend ............................. 431 n13.5.7. Se añadió un nuevo store para usuarios .... 433 n13.5.8. Utilidades JWT ............... 437 n13.5.9. Añadiendo nuevas rutas ............................ 439 n13.5.10. Mejoras en las utilidades de testing ........ 442 n13.5.11. Cambios en los test .... 442 n13.5.12. Cobertura de test ....... 444 n13.6. Resumen .............................. 445 n13.6.1. Lectura adicional .......... 445 nCAPÍTULO 14 nManejo de errores en Node.js .... 447 n14.1. Requisitos técnicos ............. 448 n14.2. Explorando los tipos de errores .................... 448 n14.2.1. Errores de sintaxis ........ 449 n14.2.2. Errores en tiempo de ejecución ................. 449 n14.3. Lanzando errores claros ..... 450 n14.3.1. El objeto de error .......... 451 n14.3.2. Errores personalizados ........................... 452 n14.4. Manejo de errores en Express ...................... 454 n14.4.1. Middleware para el manejo de errores ..... 454 n14.4.2. Errores personalizados ........................... 455 n14.5. Graceful shutdown en aplicaciones .............. 456 n14.5.1. Eventos ......................... 457 n14.5.2. Códigos de salida ......... 459 n14.5.3. Evitando procesos zombi ........................... 460 n14.6. Resumen ............................. 461 n14.6.1. Lectura adicional .......... 462 nCAPÍTULO 15 nProteger aplicaciones web ......... 463 n15.1. La importancia de la seguridad ..................... 464 n15.1.1. Ingeniería social ........... 465 n15.1.2. Riesgos en la cadena de suministro ........... 467 n15.1.3. El impacto en el negocio ............................ 468 n n15.2. Cómo comenzar con la seguridad ................. 469 n15.2.1. Resumen del OWASP Top 10 ..................... 469 n15.2.2. Common Weakness Enumeration (CWE) .. 471 n15.2.3. Common Vulnerabilities and Exposures (CVE) n......................................... 472 n15.2.4. Modelo de amenazas de Node.js .............. 476 n15.2.5. Las recomendaciones oficiales de Node.js 476 n15.3. Mejorando la seguridad de nuestras naplicaciones .............. 477 n15.3.1. Póngalo en práctica ...... 481 n15.4. Convirtiéndose en un hacker ético ............... 482 n15.4.1. Divulgación coordinada de vulnerabilidades n(CVD) .............. 483 n15.4.2. Programas de recompensas ....................... 485 n15.4.3. Adquiriendo las habilidades ....................... 486 n15.5. Resumen .............................. 486 n15.5.1. Lectura adicional .......... 487 nPARTE 5 nDOMINANDO EL DESPLIEGUE Y LA PORTABILIDAD DE nNODE.JS ..................................... 489 nCAPÍTULO 16 nDesplegando aplicaciones de Node.js .................... 491 n16.1. Requisitos técnicos ............. 492 n16.2. Definiendo los requisitos .... 492 n16.3. Usando un repositorio de GitHub ................. 496 n16.3.1. Creando un repositorio de GitHub ............. 496 n16.3.2. Subiendo el código al repositorio .............. 497 n16.4. Integración continua con GitHub Actions ..... 499 n16.5. Usando MongoDB Atlas ...... 504 n16.6. Despliegue de aplicaciones Node.js con PM2 ..... n506 n16.6.1. Creando un droplet de DigitalOcean ......... 507 n16.6.2. Conectándose a la máquina ....................... 508 n16.6.3. Preparando la máquina ............................. 509 n16.6.4. Clonando el repositorio ............................. 510 n16.6.5. Instalando las dependencias ...................... 511 n16.6.6. Preparando el entorno ............................... 511 n16.6.7. Administrando la aplicación con PM2 ....... 512 n16.6.8. Accediendo a la aplicación ......................... 512 n16.7. Resumen ............................. 514 n16.7.1. Lectura adicional ............. 514 nCAPÍTULO 17 nDockerizando una aplicación de Node.js ............... 515 n17.1. Requisitos técnicos ............. 516 n17.2. Contenedores y soluciones nativas de la nube ncon Docker .................................... 517 n17.2.1. Ciclo de vida de Docker .............................. 517 n17.2.2. Dockerizando la aplicación ........................ 518 n17.2.3. Administrando la aplicación con Docker .... 520 n17.2.4. Agregando la construcción de Docker a la CI n......................................... 522 n17.2.5. Subiendo la imagen a Docker Hub ............. 523 n17.2.6. Publicando la imagen con GitHub Actions . 525 n17.3. Ejecutando los contenedores ....................... 526 n17.4. Usando Cloudflare ............... 529 n17.5. Siguiente nivel –Principios de la aplicación nTwelve-Factor ................................. 531 n n17.6. Limpieza ............................... 532 n17.7. Resumen .............................. 533 n17.7.1. Lectura adicional .......... 534

9788426738998

GASCON, ULISES

Sinopsis del producto

Node.js ha revolucionado el desarrollo de JavaScript en el lado del servidor, combinando un rendimiento nsuperior con un stack tecnológico unificado y un vasto ecosistema de paquetes. Este entorno de ejecución npermite a los desarrolladores crear aplicaciones robustas, escalables y altamente versátiles, adaptables a nuna amplia gama de casos de uso. El gran libro de Node.js es su guía completa para dominar este potente nentorno de desarrollo: le guiará desde los conceptos más básicos hasta los temas más avanzados, y nadquirirá las habilidades necesarias para aprovechar todo el potencial de Node.js en sus proyectos. nEl viaje comienza con una sólida comprensión de los fundamentos de Node.js y un repaso de los principios nesenciales de JavaScript. A medida que avance, se sumergirá en la creación de aplicaciones web modernas nutilizando Node.js, Express. njs y MongoDB, explorará temas avanzados como la programación asíncrona, la gestión de paquetes con nnpm, la implementación de patrones orientados a eventos para servidores HTTP, API RESTful, JSON Web nTokens y mucho más. nEn los capítulos finales, este libro le llevará a través del proceso completo de despliegue, presentando nestrategias tanto para configuraciones bare metal como para entornos virtualizados y contenedores con nDocker. Además, descubrirá cómo gestionar procesos de manera eficiente con Process Manager 2 (PM2), nasegurando que sus aplicaciones Node.js funcionen de manera óptima. nAl finalizar esta obra, estará equipado con todo lo necesario para crear, probar y desplegar aplicaciones nweb con Node.js, llevando sus habilidades de desarrollo a nuevos niveles de competencia y confianza. n• Construirá aplicaciones Node.js sólidas y seguras desde cero. n• Descubrirá cómo consumir y publicar paquetes npm de manera efectiva. n• Dominará patrones para refactorizar y evolucionar sus aplicaciones con el tiempo. n• Obtendrá una comprensión profunda de los principios esenciales del desarrollo web, incluyendo nHTTP, diseño de API RESTful, JWT, autenticación, autorizacióny manejo de errores. n• Implementará estrategias de testing robustas para mejorar la calidad y fiabilidad de sus naplicaciones. n• Desplegará sus aplicaciones Node.js en entornos de producción utilizando Docker y PM2. nGracias a esta lectura llevará sus habilidades de desarrollo al siguiente nivel. Con El gran libro de Node.js nestará plenamente preparado para enfrentar los desafíos del desarrollo moderno y desplegar aplicaciones nque marquen la diferencia en el competitivo mundo digital. n nCONTENIDO nPrefacio ...................................... XI nPARTE 1 nRESUMEN DEL LENGUAJE nJAVASCRIPT Y NODE.JS .............. 1 nCAPÍTULO 1 nIntroducción a Node.js ............... 3 n1.1. ¿Por qué es Node.js tan popular? ....................... 4 n1.1.1. Ligero y rápido ................ 4 n1.1.2. Multiplataforma y multipropósito ................... 5 n1.1.3. Curva de aprendizaje fácil ................................ 5 n1.1.4. Ecosistema ...................... 6 n1.1.5. Impulsado por la comunidad ........................... 7 n1.2. La arquitectura de un solo hilo de Node.js ......... 8 n1.2.1. La E/S necesita hacerse de manera diferente .. 8 n1.2.2. E/S no bloqueante ......... 9 n1.2.3. Profundizando en el bucle de eventos ........... 11 n1.3. Versiones de Node.js ............ 12 n1.3.1. Versionado semántico (SemVer) ................... 12 n1.3.2. Detalles de la versión ..... 13 n1.3.3. Calendario de lanzamientos ........................... 15 n1.4. Resumen ................................ 17 n1.4.1. Lectura adicional ............ 18 nCAPÍTULO 2 nConfigurando el entorno de desarrollo ................... 19 n2.1. Requisitos técnicos ............... 20 n2.2. Instalando Node.js en macOS, Windows y Linux n.............. 20 n2.2.1. macOS ............................. 21 n2.2.2. Windows .......................... 22 n2.2.3. Linux ................................. 22 n2.2.4. Otros entornos ................ 23 n2.2.5. Verificando la instalación ............................... 23 n2.3. Gestionando las versiones de Node.js .............. 24 n2.4. Administrando Node.js usando nvm ................. 25 n2.4.1. Instalación y uso de versiones ....................... 26 n n2.4.2. Usando un archivo .nvmrc ............................. 27 n2.5. REPL de Node.js .................... 29 n2.6. Interactuando con JavaScript usando Chrome nDevTools ......................................... 31 n2.6.1. El panel Console ............. 32 n2.6.2. El panel Network ............. 32 n2.6.3. Usando Chrome DevTools .............................. 33 n2.7. Resumen ................................ 34 n2.7.1. Lectura adicional ............ 35 nCAPÍTULO 3 nFundamentos de JavaScript ...... 37 n3.1. Requisitos técnicos ............... 38 n3.2. JavaScript es un lenguaje poderoso .................. 38 n3.3. Entendiendo la versión TC39 ............................ 40 n3.3.1. Entendiendo la versión ECMAScript .............. 40 n3.3.2. ¿Qué se incluirá en la próxima versión de nJavaScript? .. 41 n3.3.3. ¿Qué no se incluye en la especificación de nJavaScript? ..... 41 n3.4. Explorando la documentación de JavaScript .... 42 n3.5. Linting del código JavaScript ............................. 43 n3.6. Comentando el código JavaScript ..................... 44 n3.6.1. Uso de JSDoc .................. 45 n3.7. Imprimiendo valores y depurando de una forma nágil ....... 46 n3.8. Variables y constantes .......... 47 n3.8.1. Convenciones de nomenclatura .................... 48 n3.8.2. let vs const ...................... 48 n3.9. Entendiendo los tipos de datos ........................ 50 n3.9.1. undefined ........................ 50 n3.9.2. object ............................... 50 n3.9.3. boolean ............................ 51 n3.9.4. number ............................ 51 n3.9.5. string ................................ 51 n3.9.6. function ........................... 51 n3.9.7. bigint ................................ 52 n3.9.8. symbol ............................. 52 n n3.10. Explorando números ........... 52 n3.10.1. Operadores aritméticos ............................... 53 n3.10.2. Operadores de asignación ........................... 53 n3.10.3. Métodos útiles .............. 54 n3.10.4. El objeto Math ............... 55 n3.10.5. Otros números .............. 56 n3.11. Explorando el objeto Dates ............................. 56 n3.12. Declaraciones condicionales ........................... 59 n3.12.1. Operadores de comparación matemática ... 59 n3.12.2. Operadores de igualdad ............................... 59 n3.12.3. Operadores lógicos ....... 60 n3.12.4. El operador NOT (!) ....... 60 n3.12.5. Igualdad en JavaScript ................................. 61 n3.12.6. El operador de coalescencia nula (??) ......... 63 n3.12.7. La declaración if ........... 63 n3.12.8. La declaración switch ... 65 n3.12.9. Operador ternario ......... 66 n3.13. Entendiendo los bucles ....... 68 n3.13.1. while .............................. 68 n3.13.2. do...while ....................... 68 n3.13.3. for ................................... 69 n3.14. Uso de cadenas de texto en JavaScript n................................. 70 n3.14.1. Métodos importantes ... 71 n3.15. Explorando arrays ............... 73 n3.15.1. Operaciones básicas .... 74 n3.15.2. Iterando sobre un array ............................... 77 n3.15.3. Filtrado .......................... 79 n3.15.4. Desestructuración ........ 82 n3.15.5. Set .................................. 83 n3.16. Uso de objetos en JavaScript .......................... 84 n3.16.1. Operaciones básicas .... 84 n3.16.2. Iteración ........................ 87 n3.16.3. Shallow copy versus deep copy ................... 89 n3.16.4. Fusionando objetos ...... 92 n3.16.5. Desestructuración ........ 93 n3.16.6. Encadenamiento opcional (?.) ..................... 93 n3.17. Explorando las funciones ... 95 n3.17.1. Los fundamentos ......... 95 n3.17.2. Funciones flecha (arrow functions) ............. 97 n3.17.3. Closures ........................ 100 n3.18. Creando y administrando clases ................... 102 n3.18.1. Creando una clase ....... 103 n3.18.2. Métodos de clase ......... 103 n3.18.3. Extendiendo clases ...... 104 n3.18.4. Métodos estáticos ........ 105 n3.18.5. Getters y setters ........... 106 n3.19. Resumen ............................. 107 n3.19.1. Lectura adicional .......... 108 nCAPÍTULO 4 nProgramación asíncrona ............ 109 n4.1. Requisitos técnicos ............... 110 n4.2. Programación asíncrona en JavaScript ........... 110 n4.2.1. La mentalidad asíncrona .............................. 111 n4.2.2. Métodos asíncronos en JavaScript ............... 112 n4.3. Entendiendo los callbacks .... 113 n4.3.1. Temporizadores e intervalos ....................... 115 n4.3.2. Error first en callbacks ... 118 n4.3.3. Infierno de callbacks ...... 120 n n4.4. Dominando las promesas ..... 121 n4.4.1. Uso de promesas ............ 122 n4.4.2. Creando promesas ......... 124 n4.4.3. Infierno de los callbacks con promesas ....... 125 n4.4.4. Promesas en paralelo ..... 127 n4.4.5. Manejo de errores ........... 130 n4.4.6. Encadenamiento de promesas .................... 132 n4.5. Uso de async y await para manejar código nasíncrono ............ 133 n4.5.1. Async ................................ 133 n4.5.2. Await ................................ 134 n4.6. Funciones autoejecutables (IIFE) .................... 136 n4.7. Resumen ................................ 137 n4.7.1. Lectura adicional ............ 137 nPARTE 2 nECOSISTEMA Y ARQUITECTURA DE NODE.JS ...... 139 nCAPÍTULO 5 nLibrerías del core de Node.js ..... 141 n5.1. Requisitos técnicos ............... 142 n5.2. Modularizando su código (ESM versus CJS) .... 142 n5.2.1. CommonJS (CJS) ............. 144 n5.2.2. ECMAScript Modules (ESM) ......................... 148 n5.2.3. Entendiendo cómo funciona la ninteroperabilidad .... 151 n5.3. Funcionamiento de las core libraries .............. 154 n5.3.1. La estructura de la librería ........................... 154 n5.3.2. Índice de estabilidad ...... 158 n5.3.3. Otras librerías del core ... 159 n5.3.4. Command-line options .... 161 n5.4. Resumen ................................ 163 n5.4.1. Lectura adicional ............ 164 nCAPÍTULO 6 nLibrerías de terceros y npm ....... 165 n6.1. Requisitos técnicos ............... 166 n6.2. Administrando su aplicación con el package.json n.... 166 n6.3. Elegir las dependencias correctas para su nproyecto ........... 169 n6.3.1. Riesgos ............................ 170 n6.3.2. Buenos criterios .............. 172 n6.4. Instalación de dependencias ........................... 177 n6.4.1. Local o global .................. 177 n6.4.2. Dependencia o dependencia de desarrollo . 178 n6.4.3. Añadiendo una nueva dependencia ............ 179 n6.4.4. Instalando todas las dependencias .............. 182 n6.4.5. Eliminando dependencias ............................ 182 n6.5. Entendiendo el packagelock.json .................... 183 n6.6. Gestionando versiones de las dependencias .. 185 n6.6.1. Dependencias desactualizadas .................... 185 n6.7. Construyendo JavaScript isomórfico ............... 186 n6.8. Usando scripts de npm ......... 187 n6.9. Ejecutando paquetes directamente con npx .. 189 n6.10. Alternativas a npm .............. 192 n6.10.1. Yarn ............................... 192 n6.10.2. PNPM ............................ 193 n6.10.3. Verdaccio ...................... 193 n6.11. Publicando nuestro primer paquete ............. 193 n n6.11.1. Registros ....................... 194 n6.11.2. Cuenta de npm ............. 194 n6.11.3. Preparar el paquete ..... 194 n6.11.4. Revisando el paquete .. 197 n6.11.5. Publicar el paquete ...... 199 n6.11.6. Nombres de paquetes ............................... 200 n6.11.7. Lanzar nuevas versiones ............................ 201 n6.11.8. Prevenir la publicación accidental ............. 203 n6.11.9. Mejores prácticas ......... 203 n6.12. Resumen .............................. 204 n6.12.1. Lectura adicional .......... 205 nCAPÍTULO 7 nArquitectura orientada a eventos .......................... 207 n7.1. Requisitos técnicos ............... 208 n7.2. Introducción a los eventos .... 208 n7.3. Observando cambios en los archivos .............. 209 n7.4. La librería emisora de eventos de Node.js ...... 211 n7.4.1. Previniendo el caos organizando los nsuscriptores .... 213 n7.4.2. Eliminando suscriptores cuando no son nnecesarios .................................. 214 n7.5. Su primer servidor HTTP ........ 214 n7.6. Agregando una interfaz de eventos a sus módulos n................. 216 n7.7. Resumen ................................ 218 n7.7.1. Lectura adicional ............ 219 nCAPÍTULO 8 nTesting en Node.js ...................... 221 n8.1. Requisitos técnicos ............... 222 n8.2. ¿Por qué es importante el testing? ................. 222 n8.2.1. El testing es una cultura compleja ............... 223 n8.2.2. El testing es una actividad de equipo .......... 223 n8.2.3. Aproveche ahora ............. 224 n8.3. Enfoque y filosofía del testing ......................... 226 n8.3.1. El testing es ampliamente utilizado en el mundo n........................................ 226 n8.3.2. La pirámide de test ........ 228 n8.4. ¿Cómo debo probar mi código? n......................................... 230 n8.4.1. Frameworks y librerías ... 230 n8.4.2. Nuestro primer test ........ 231 n8.4.3. Principios y objetivos del testing ................. 232 n8.5. Escribiendo nuestro primer test suite ............ 234 n8.5.1. Módulo Utils .................... 234 n8.5.2. La librería node:test ....... 235 n8.5.3. Usando la librería Jest .... 238 n8.6. Dominando las herramientas de test coverage .... n242 n8.6.1. Configuración .................. 242 n8.6.2. Ejecutando los test ......... 243 n8.6.3. Informe de Node.js ......... 244 n8.6.4. Informe de Jest ............... 245 n8.6.5. Informes interactivos ...... 246 n8.7. TDD en acción ....................... 247 n8.8. Resumen ................................ 251 n8.8.1. Lectura adicional ............ 252 nPARTE 3 n nFUNDAMENTOS DE UNA APLICACIÓN WEB .......... 253 nCAPÍTULO 9 nManejo de HTTP y REST API ....... 255 n9.1. Requisitos técnicos ............... 256 n9.2. Cómo funciona Internet por debajo ............... 256 n9.2.1. Historia de Internet ......... 257 n9.2.2. Infraestructura de Internet .......................... 258 n9.2.3. Request for Comments (RFC) n.......................................... 259 n9.2.4. Otros RFC ......................... 262 n9.3. HTTP – Relación servidor y cliente .................. 263 n9.3.1. Petición y respuesta ....... 263 n9.3.2. Renderizado del lado del servidor (server nrender) ....... 266 n9.3.3. Single Page Applications (SPA) .................... 267 n9.4. Dominando HTTP ................... 269 n9.4.1. Encabezados HTTP ......... 269 n9.4.2. Códigos de estado .......... 272 n9.4.3. Métodos de petición ....... 275 n9.4.4. Cargas útiles de HTTP ..... 277 n9.4.5. Versiones de HTTP .......... 277 n9.5. Uso de URL en aplicaciones web .................... 278 n9.6. REST API en resumen ............ 280 n9.7. Explorando la especificación JSON .................. 284 n9.8. Depuración de peticiones HTTP ...................... 285 n9.9. Resumen ................................ 286 n9.9.1. Lectura adicional ............ 287 nCAPÍTULO 10 nDesarrollando aplicaciones web con Express n........................ 289 n10.1. Requisitos técnicos ............. 290 n10.2. Familiarizándonos con la librería Express ..... 290 n10.2.1. Instalando Express ....... 291 n10.2.2. Hola Mundo ................... 291 n10.2.3. Usando el generador .... 293 n10.2.4. Depuración .................... 295 n10.3. Entendiendo los motores de plantillas ......... 297 n10.3.1. Elegir un motor de plantillas ...................... 297 n10.3.2. Renderizando una plantilla ........................ 297 n10.3.3. Entendiendo el proceso . 300 n10.4. Dominando las peticiones .. 301 n10.4.1. Métodos HTTP .............. 302 n10.4.2. Rutas ............................. 303 n10.4.3. Controladores ............... 307 n10.5. Dominando las respuestas n..................................... 309 n10.5.1. Gestión de cabeceras .. 309 n10.5.2. Códigos de estado ........ 311 n10.5.3. Redirecciones ............... 312 n10.5.4. Enviando datos ............. 313 n10.5.5. Enviando archivos ........ 315 n10.6. Usando el patrón de middleware ................. 316 n10.6.1. Entendiendo el alcance .............................. 320 n10.6.2. Anatomía del middleware ......................... 320 n10.6.3. Agregando middleware a la aplicación ...... 323 n10.6.4. Agregando middleware a una ruta ............ 324 n10.6.5. Middleware común utilizado en Express ... 325 n10.7. Uso de middleware de terceros .................... 327 n n10.8. Resumen ............................. 328 n10.8.1. Lectura adicional .......... 329 nPARTE 4 nCONSTRUYENDO APLICACIONES WEB SÓLIDAS CON nNODE.JS ............................. 331 nCAPÍTULO 11 nConstruyendo una aplicación web desde cero n.......................... 333 n11.1. Requisitos técnicos ............. 334 n11.2. El inicio del proyecto ........... 334 n11.2.1. El objetivo del proyecto ............................. 334 n11.2.2. Comenzando con el primer paso ............... 336 n11.3. Construyendo una REST API .......................... 337 n11.3.1. Añadiendo las rutas ...... 338 n11.3.2. Añadiendo los stores .... 340 n11.3.3. Añadiendo los archivos estáticos ............... 349 n11.3.4. Añadiendo las plantillas ............................. 350 n11.4. Testing con supertest .......... 351 n11.4.1. Añadiendo stores al servidor ..................... 352 n11.4.2. Creando utilidades de test ......................... 354 n11.4.3. Añadiendo test al servidor ......................... 357 n11.5. Revisando el resultado final del proyecto ..... 367 n11.5.1. La página Acerca de ..... 367 n11.5.2. ¡Celebremos! ................. 371 n11.5.3. Próximos pasos ............. 372 n11.6. Resumen .............................. 372 nCAPÍTULO 12 nPersistencia de datos con MongoDB ..................... 373 n12.1. Requisitos técnicos ............. 374 n12.2. ¿Qué es MongoDB? ............. 374 n12.2.1. Versiones ....................... 375 n12.3. Configuración de MongoDB n....................................... 376 n12.3.1. Instalación de Docker ... 376 n12.3.2. Ejecutando MongoDB en un contenedor .. 377 n12.3.3. Ejecutando MongoDB con Docker Compose n................. 379 n12.3.4. Agregando comandos Docker a package.json n.............. 381 n12.3.5. Conectándose a MongoDB ........................ 382 n12.3.6. Otras formas de instalar MongoDB ........... 383 n12.4. Cómo usar secretos en Node.js n......................................... 383 n12.4.1. Variables de entorno .... 384 n12.4.2. El archivo .env .............. 385 n12.4.3. dotenv ........................... 385 n12.5. Usando un ODM –Mongoose ....................... 386 n12.6. Migrando una aplicación web a MongoDB ... 387 n12.6.1. Instalando dependencias ........................... 388 n12.6.2 Administrando secretos .. 388 n12.6.3. Migrando la capa de datos ........................ 391 n12.7. Probando nuestra capa de integración con nMongoDB ....... 396 n12.7.1. Actualizar las utilidades ............................. 396 n12.7.2. Refactorizando el test suite ....................... 398 n12.7.3. Algunos test deben cambiar ...................... 400 n12.7.4. Verificando la cobertura ............................ 402 n n12.8. Resumen ............................. 407 n12.8.1. Lectura adicional .......... 408 nCAPÍTULO 13 nAutenticación y autorización de usuarios .............. 411 n13.1. Requisitos técnicos ............. 412 n13.2. Entendiendo la autenticación y la autorización nmoderna ........................................ 412 n13.2.1. Autenticación ................ 413 n13.2.2. Autorización .................. 413 n13.3. JWT en pocas palabras ....... 415 n13.3.1. El proceso ...................... 416 n13.3.2. La teoría ........................ 417 n13.3.3. Criptografía 101 ........... 417 n13.3.4. Estructura de JWT ......... 420 n13.3.5. JWT.io ............................ 421 n13.4. Entendiendo los fundamentos de Passport.js n......... 422 n13.5. Agregando autenticación y autorización a nnuestra aplicación web ............................... 423 n13.5.1. Descargando el proyecto base ................... 423 n13.5.2. Configuración ................ 423 n13.5.3. Ejecute los test ............. 424 n13.5.4. Los cambios en la UI .... 426 n13.5.5. Dependencias añadidas ............................. 430 n13.5.6. Cambios en el frontend ............................. 431 n13.5.7. Se añadió un nuevo store para usuarios .... 433 n13.5.8. Utilidades JWT ............... 437 n13.5.9. Añadiendo nuevas rutas ............................ 439 n13.5.10. Mejoras en las utilidades de testing ........ 442 n13.5.11. Cambios en los test .... 442 n13.5.12. Cobertura de test ....... 444 n13.6. Resumen .............................. 445 n13.6.1. Lectura adicional .......... 445 nCAPÍTULO 14 nManejo de errores en Node.js .... 447 n14.1. Requisitos técnicos ............. 448 n14.2. Explorando los tipos de errores .................... 448 n14.2.1. Errores de sintaxis ........ 449 n14.2.2. Errores en tiempo de ejecución ................. 449 n14.3. Lanzando errores claros ..... 450 n14.3.1. El objeto de error .......... 451 n14.3.2. Errores personalizados ........................... 452 n14.4. Manejo de errores en Express ...................... 454 n14.4.1. Middleware para el manejo de errores ..... 454 n14.4.2. Errores personalizados ........................... 455 n14.5. Graceful shutdown en aplicaciones .............. 456 n14.5.1. Eventos ......................... 457 n14.5.2. Códigos de salida ......... 459 n14.5.3. Evitando procesos zombi ........................... 460 n14.6. Resumen ............................. 461 n14.6.1. Lectura adicional .......... 462 nCAPÍTULO 15 nProteger aplicaciones web ......... 463 n15.1. La importancia de la seguridad ..................... 464 n15.1.1. Ingeniería social ........... 465 n15.1.2. Riesgos en la cadena de suministro ........... 467 n15.1.3. El impacto en el negocio ............................ 468 n n15.2. Cómo comenzar con la seguridad ................. 469 n15.2.1. Resumen del OWASP Top 10 ..................... 469 n15.2.2. Common Weakness Enumeration (CWE) .. 471 n15.2.3. Common Vulnerabilities and Exposures (CVE) n......................................... 472 n15.2.4. Modelo de amenazas de Node.js .............. 476 n15.2.5. Las recomendaciones oficiales de Node.js 476 n15.3. Mejorando la seguridad de nuestras naplicaciones .............. 477 n15.3.1. Póngalo en práctica ...... 481 n15.4. Convirtiéndose en un hacker ético ............... 482 n15.4.1. Divulgación coordinada de vulnerabilidades n(CVD) .............. 483 n15.4.2. Programas de recompensas ....................... 485 n15.4.3. Adquiriendo las habilidades ....................... 486 n15.5. Resumen .............................. 486 n15.5.1. Lectura adicional .......... 487 nPARTE 5 nDOMINANDO EL DESPLIEGUE Y LA PORTABILIDAD DE nNODE.JS ..................................... 489 nCAPÍTULO 16 nDesplegando aplicaciones de Node.js .................... 491 n16.1. Requisitos técnicos ............. 492 n16.2. Definiendo los requisitos .... 492 n16.3. Usando un repositorio de GitHub ................. 496 n16.3.1. Creando un repositorio de GitHub ............. 496 n16.3.2. Subiendo el código al repositorio .............. 497 n16.4. Integración continua con GitHub Actions ..... 499 n16.5. Usando MongoDB Atlas ...... 504 n16.6. Despliegue de aplicaciones Node.js con PM2 ..... n506 n16.6.1. Creando un droplet de DigitalOcean ......... 507 n16.6.2. Conectándose a la máquina ....................... 508 n16.6.3. Preparando la máquina ............................. 509 n16.6.4. Clonando el repositorio ............................. 510 n16.6.5. Instalando las dependencias ...................... 511 n16.6.6. Preparando el entorno ............................... 511 n16.6.7. Administrando la aplicación con PM2 ....... 512 n16.6.8. Accediendo a la aplicación ......................... 512 n16.7. Resumen ............................. 514 n16.7.1. Lectura adicional ............. 514 nCAPÍTULO 17 nDockerizando una aplicación de Node.js ............... 515 n17.1. Requisitos técnicos ............. 516 n17.2. Contenedores y soluciones nativas de la nube ncon Docker .................................... 517 n17.2.1. Ciclo de vida de Docker .............................. 517 n17.2.2. Dockerizando la aplicación ........................ 518 n17.2.3. Administrando la aplicación con Docker .... 520 n17.2.4. Agregando la construcción de Docker a la CI n......................................... 522 n17.2.5. Subiendo la imagen a Docker Hub ............. 523 n17.2.6. Publicando la imagen con GitHub Actions . 525 n17.3. Ejecutando los contenedores ....................... 526 n17.4. Usando Cloudflare ............... 529 n17.5. Siguiente nivel –Principios de la aplicación nTwelve-Factor ................................. 531 n n17.6. Limpieza ............................... 532 n17.7. Resumen .............................. 533 n17.7.1. Lectura adicional .......... 534

9788426738998

GASCON, ULISES

Ver más
Ver menos

$74.900,00

99999 disponibles

*Precios válidos solo para compras online.
Costo de envío      Medios de pago
mp-logo-hand-shake
Hasta 12 pagos sin tarjeta con Mercado Pago. Saber más
Compra con Mercado Pago sin tarjeta y paga mes a mes
1
Agrega tu producto al carrito y al momento de pagar, elige “Cuotas sin Tarjeta” o “Meses sin Tarjeta”.
2
Inicia sesión en Mercado Pago.
3
Elige la cantidad de pagos que se adapten mejor a ti ¡y listo!

Crédito sujeto a aprobación.

¿Tienes dudas? Consulta nuestra Ayuda.

Con esta compra sumás 74900 puntos
Comprar ahora

Especificaciones

Tapa blanda o Bolsillo
Argentina
Español / Castellano
Producto a la venta formado por un único componente
Marcombo
20/02/2020
10
ISBN 9788426738998

Quizás te interese

Valoraciones

No hay valoraciones aún.

¿Ya lo leíste? Valorá “El gran libro de Node.js”

Creado por Livriz