En este libro haremos un recorrido teórico y práctico por todo el ecosistema tecnológico que compone Node.js. Veremos desde su instalación en diferentes plataformas, hasta cómo crear programas, paso a paso y de manera detallada. En cada parte trataremos temas fundamentales que nos ayudarán a conocer y comprender mejor cada detalle de Node.js, sin necesidad de poseer conocimientos previos. Además, con guraremos el entorno de trabajo y, al mismo tiempo, crearemos programas de ejemplo utilizando los módulos de Node.js que estudiamos en cada capítulo.
El libro está dividido en tres partes, con estos contenidos:
- Parte I: ¿qué es Node.js? Indicaciones para realizar su instalación en diferentes plataformas. Análisis de su arquitectura (ECMAScript, JavaScript, motor V8). Guía paso a paso para el uso de los comandos node y npm. Diferencias entre la programación bloqueante y no bloqueante en Node.js.
- Parte II: manejo del sistema de archivos ( le system) y salida por consola. Creación de un servidor web utilizando el protocolo HTTP versión 2. Uso de Express para crear una API de tipo REST utilizando el módulo de ruteo y el retorno de datos en formato JSON.
- Parte III: aplicación de Node.js en diferentes proyectos. Cómo conectarse a distintos motores de bases de datos, ejecutar operaciones CRUD sobre una API de tipo REST hecha con Node.js y Express, y publicar una aplicación en un ambiente productivo utilizando PM2.
Todos los contenidos están redactados con un lenguaje claro y didáctico, alternando la parte teoría con ejemplos prácticos y actividades para facilitar la asimilación de los conceptos desarrollados.
Tabla de Contenido
ACERCA DEL AUTOR
PRÓLOGO
SOBRE ESTA OBRA
PARTE 1
CAPÍTULO 1. INTRODUCCIÓN E INSTALACIÓN
1.1 ¿QUÉ ES NODE.JS?
1.1.1 Información de interés sobre Node.js
1.1.2 OpenJS Foundation
1.1.3 Node.js como servidor web
1.1.4 Frameworks y complementos para Node.js
1.1.5 Node.js en MEAN y MERN Stack
1.1.6 Callbacks
1.2 INSTALACIÓN
1.2.1 Instalar Node.js en Windows
1.2.2 Instalar Node.js en Linux
1.3 TESTEAR LA INSTALACIÓN
1.3.1 Primer programa en Node.js
1.3.2 Hola Mundo
1.3.3 Callbacks
CAPÍTULO 2. ARQUITECTURA
2.1 COMPONENTES INTERNOS
2.1.1 Ejemplo
2.2 ECMASCRIPT
2.3 ENTORNO DE EJECUCIÓN
2.4 V8
2.5 CONSEJOS PARA EL USO DE JAVASCRIPT
2.5.1 Declarar todas las propiedades de un objeto en su constructor
2.5.2 Respetar los tipos de datos
2.5.3 No crear clases en el scope de una función
2.5.4 Cuidado con los paquetes de terceros que agregamos
2.5.5 Estar al día con la información y las versiones (todo cambia)
2.5.6 Utilizar === en lugar de == para comparar dos valores
2.5.7 Tener cuidado con la coerción de datos
2.6 PAQUETES
2.7 MÓDULOS
2.8 CREAR NUESTRO PRIMER MÓDULO
2.8.1 Ejemplo
2.8.2 Módulos incluidos en Node.js (Built-in modules)
CAPÍTULO 3. COMANDOS NODE Y NPM
3.1 PARÁMETROS DE LOS COMANDOS
3.2 COMANDO NODE
3.2.1 Verificar si un programa es sintácticamente correcto
3.2.2 Enviar parámetros al motor JavaScript V8 incluido en Node.js
3.2.3 Utilizar Node.js sin necesidad de crear un archivo.js
3.3 COMANDO NPM
3.3.1 Discusión con respecto al significado del término npm
3.3.2 Parámetros de configuración del comando npm
3.3.3 Registro de paquetes de npm
3.3.4 Cómo buscar un paquete en el repositorio de npm
3.3.5 Cómo instalar un paquete utilizando npm
3.3.6 Paquetes solo para el ambiente de desarrollo
3.3.7 Cómo verificar si existen paquetes desactualizados
3.3.8 Actualizar un paquete
3.3.9 npm Orgs y Enterprise
3.3.10 Tendencias de los paquetes npm
3.4 ESTRUCTURA DE UN PROYECTO
3.4.1 Inicializar un proyecto de Node.js (package.json)
3.4.2 Directorio node_modules
3.5 PRIMER PROYECTO EN NODE.JS
CAPÍTULO 4. BLOCKING VS. NON-BLOCKING
4.1 EVENT LOOP Y WORKER POOL
4.2 CONCEPTOS BÁSICOS DE MANEJO DE CONCURRENCIA EN UN SISTEMA OPERATIVO
4.3 MANEJO DE HILOS EN NODE.JS
4.3.1 Tipos de hilos de ejecución
4.3.2 No bloquear Event Loop
4.4 CONSEJOS PARA EL USO DE NODE.JS
4.4.1 Revisar la complejidad algorítmica de las funciones
4.4.2 Controlar los parámetros de entrada de las funciones
4.4.3 Evitar el uso de expresiones regulares que provoquen un ReDos
4.4.4 Trabajar siempre con las versiones asíncronas de las funciones
4.4.5 No procesar objetos en formato Json demasiado grandes
4.5 FUNCIONES ASÍNCRONAS EN NODE.JS
4.6 CALLBACK HELL
4.7 PROMESAS
4.7.1 Migrar una función que usa callbacks a una promesa
4.7.2 Ejecutar múltiples promesas al mismo tiempo
4.7.3 Anidamiento de promesas
4.7.4 Retornar siempre la promesa que anidamos
4.7.5 No utilizar forEach en el resultado de una promesa
4.7.6 Agregar el catch
4.7.7 No caer en el desorden
4.8 PRIMITIVAS ASYNC/AWAIT
4.8.1 Control de errores
4.8.2 Compatibilidad de async/await con Node.js
PARTE 2
CAPÍTULO 5. SISTEMA DE ARCHIVOS
5.1 MÓDULO PARA EL MANEJO DEL SISTEMA DE ARCHIVOS
5.1.1 Retorno de promesa
5.2 WINDOWS Y UNIX/LINUX
5.2.1 Manejo de rutas de archivos
5.3 API PARA OPERAR CON ARCHIVOS
5.3.1 Abrir un archivo
5.3.2 Leer un archivo
5.3.3 Escribir en un archivo
5.3.4 Documentación de la API FileSystem de Node.js
5.4 ACTIVIDADES
5.4.1 Test de autoevaluación
5.4.2 Ejercicios prácticos
CAPÍTULO 6. CONSOLA
6.1 MÓDULO CONSOLE
6.1.1 Métodos
6.2 CLASE CONSOLE
6.2.1 Referencia al módulo fs (file system)
6.2.2 Cómo crear el archivo de log
6.2.3 Documentación de Node.js
6.3 ACTIVIDADES
6.3.1 Test de autoevaluación
6.3.2 Ejercicios prácticos
CAPÍTULO 7. MÓDULO HTTP2 DE NODE.JS
7.1 PROTOCOLO HTTP VERSIÓN 2
7.1.1 Conceptos básicos del protocolo HTTP
7.1.2 Módulo HTTP/2 de Node.js
7.2 SERVIDOR
7.2.1 Ejemplos
7.3 CLIENTE
7.3.1 Ejemplos
7.4 PRUEBA DE LOS EJEMPLOS
7.4.1 Servidor web no encriptado
7.4.2 Servidor web seguro
7.4.3 Documentación de Node.js
7.5 ACTIVIDADES
7.5.1 Test de autoevaluación
7.5.2 Ejercicios prácticos
CAPÍTULO 8. SERVIDOR WEB CON NODE.JS Y EXPRESS
8.1 API REST
8.1.1 Conceptos básicos de API REST
8.2 EXPRESS
8.2.1 Instalación
8.2.2 Servidor web estático
8.2.3 Servidor API REST
8.3 RUTEO
8.3.1 Servidor API REST con ruteo
8.4 ACTIVIDADES
8.4.1 Test de autoevaluación
8.4.2 Ejercicios prácticos
PARTE 3
CAPÍTULO 9. CONEXIÓN A UNA BASE DE DATOS
9.1 BASES DE DATOS SQL Y NOSQL
9.1.1 Bases de datos SQL o relacionales
9.1.2 Bases de datos NoSQL o no relacionales
9.2 OPERAR SOBRE DIFERENTES MOTORES
9.2.1 MSSQL o Microsoft SQL Server
9.2.2 PostgreSQL
9.2.3 MySQL
9.2.4 MongoDB
9.3 CONCLUSIÓN
9.4 ACTIVIDADES
9.4.1 Test de autoevaluación
9.4.2 Ejercicios prácticos
CAPÍTULO 10. API REST
10.1 ARQUITECTURA DEL PROYECTO
10.2 INSTALACIÓN Y CONFIGURACIÓN
10.2.1 Instalación
10.2.2 Configuración
10.3 BASE DE DATOS
10.3.1 MongoDB
10.3.2 MySQL
10.4 EXPONER LAS OPERACIONES MEDIANTE EXPRESS
10.4.1 Base de datos
10.4.2 API
10.5 PRUEBA DE LA API CON POSTMAN
10.6 CONCLUSIÓN
10.7 ACTIVIDADES
10.7.1 Test de autoevaluación
10.7.2 Ejercicios prácticos
CAPÍTULO 11. PUBLICAR UNA APLICACIÓN
11.1 ¿QUÉ ES PM2?
11.1.1 Instalación
11.1.2 Gestión de procesos con PM2
11.1.3 Archivo de configuración (Ecosystem File)
11.1.4 Control sobre el inicio y fin del programa
11.2 INTERFAZ WEB
11.3 PROXY INVERSO
11.3.1 Windows
11.3.2 Linux
11.4 ACTIVIDADES
11.4.1 Test de autoevaluación
11.4.2 Ejercicios prácticos
GLOSARIO
MATERIAL ADICIONAL