Descripción:
Node.js es un entorno de tiempo de ejecución de JavaScript, de ahí su terminación «.js». Este entorno de tiempo es open source, es decir, de código abierto, multiplataforma y que se ejecuta del lado del servidor.
Este entorno fue creado por los desarrolladores de JavaScript con el objetivo de ir un paso más allá con este lenguaje de programación.
Hasta la creación de Node.js, allá por el año 2009, el lenguaje de programación JavaScript únicamente podía ejecutarse del lado del navegador o cliente, pero… ¿Qué ocurría si queríamos ejecutar este lenguaje fuera del navegador o del lado del servidor?
Como JavaScript únicamente se podía utilizar dentro del marco de las etiquetas <script> </script>, los desarrolladores tenían que tirar de diferentes lenguajes y herramientas tanto en el frontend como en el backend.
Node.js posee todo lo necesario para ejecutar código JavaScript del lado del servidor. Algo que facilita mucho el trabajo de los desarrolladores y el motivo por el que actualmente sea una de las herramientas de trabajo más usadas en desarrollo web.
Objetivo del curso: Al término del curso el participante habrá adquirido los siguientes conocimientos:
- Cómo funciona Node.js
- Sus fundamentos: arquitectura, bucle de eventos, etc.
- API: Cómo utilizar sus variables globales y módulos.
- Qué son los paquetes npm (el estándar de hecho para los paquetes JavaScript).
- Cómo utilizar npm (el gestor de paquetes incluido en Node.js) para:
- Instalar y gestionar paquetes.
- Crear y publicar paquetes.
- Cómo escribir scripts de paquetes multiplataforma para ejecutar tareas de desarrollo como la generación de artefactos y la ejecución de pruebas.
- Cómo utilizar todos los conocimientos anteriores para crear y desplegar scripts de shell multiplataforma.
Requisitos de ingreso.
Comprensión de textos en idioma inglés.
Debe estar familiarizado con JavaScript, especialmente:
- Módulos ECMAScript: importación y exportación de valores, etc.
- JavaScript asíncrono: Promesas, funciones asíncronas, etc.
Temario:
Parte 1: FUNDAMENTOS
- Cómo empezar con Node.js
- Instalar Node.js y npm
- Ejecutar código Node.js
- Una visión general de Node.js: arquitectura, APIs, bucle de eventos, concurrencia
- La plataforma Node.js
- El bucle de eventos de Node.js
- libuv: la biblioteca multiplataforma que maneja la E/S asíncrona (y más) para Node.js
- Paquetes: Las unidades de JavaScript para la distribución de software
- ¿Qué es un paquete?
- La disposición del sistema de archivos de un paquete
- Archivar e instalar paquetes
- Referirse a los módulos mediante especificadores
- Especificadores de módulos en Node.js
- El gestor de paquetes npm
- Comandos comunes de npm
- Abreviaturas de los comandos de npm
Parte 2: FUNCIONALIDAD BÁSICA DE NODE.JS
- Rutas del sistema de archivos y URLs de archivos en Node.js
- Conceptos básicos de rutas y su soporte en la API
- Obtención de las rutas de los directorios estándar a través del módulo ‘node:os’
- Concatenación de rutas
- Asegurarse de que las rutas son normalizadas, totalmente cualificadas o relativas
- Análisis de rutas: extracción de varias partes de una ruta (extensión del nombre del archivo, etc.)
- Categorización de rutas
- Utilizar las mismas rutas en diferentes plataformas
- Uso de file: URL para referirse a los archivos
- Sistema de archivos en Node.js
- Conceptos, patrones y convenciones de las APIs del sistema de archivos de Node
- Lectura y escritura de archivos
- Recorrer y crear directorios
- Copiar, renombrar, mover y eliminar archivos o directorios
- Leer y modificar entradas del sistema de archivos
- Flujos nativos de Node.js
- Flujos
- Flujos legibles
- Transformación de flujos legibles mediante generadores asíncronos
- Flujos escribibles
- Web streams en Node.js
- ¿Qué son los web streams?
- Convertir fuentes de datos en ReadableStreams mediante wrapping
- Escribir en WritableStreams
- Convertir los sumideros de datos en WritableStreams a través de wrapping
- Uso de TransformStreams
- Implementación de TransformStreams personalizados
- Flujos de bytes
- Recetas de flujos
- Escribir en la salida estándar (stdout)
- Escribir en el error estándar (stderr)
- Lectura de la entrada estándar (stdin)
- Recetas de flujos en Node.js
- Recetas de secuencias web
- Ejecución de comandos del shell en procesos hijo
- Creación de procesos asíncronos: spawn()
- Generación de procesos de forma sincrónica: spawnSync()
- Funciones de ayuda asíncronas basadas en spawn()
- Funciones de ayuda síncronas basadas en spawnAsync()
Parte 3: PAQUETES
- Instalación de paquetes npm y ejecución de scripts bin
- npx: ejecutar scripts bin en paquetes npm sin instalarlos
- Creación de scripts de shell multiplataforma
- Módulos ESM de Node.js como scripts shell independientes en Unix
- Creación de un paquete npm con scripts de shell
- Cómo instalar npm los scripts de shell
- Publicación del paquete de ejemplo en el registro npm
- Scripts shell independientes de Node.js con extensiones arbitrarias en Unix
- Scripts de shell Node.js autónomos en Windows
- Rutas de la shell: asegurarse de que las shells encuentran los scripts
- Ejecución de tareas multiplataforma a través de scripts de paquetes npm
- Scripts de paquetes npm
- Tipos de scripts de paquetes
- El entorno del shell en el que se ejecutan los scripts de paquetes
- Uso de variables de entorno en los scripts de paquetes
- Argumentos para los scripts de paquetes
- El nivel de registro de npm (cuánta salida se produce)
- Scripts de shell multiplataforma
Parte 4 :MANEJO DE TAREAS COMUNES EN EL SCRIPTING
- Análisis de los argumentos de la línea de comandos con util.parseArgs()
- Análisis de los argumentos de la línea de comandos
- Tokens de parseArgs
- Detectar si el módulo actual es “main” (el punto de entrada de la aplicación)
- Acceder a archivos relativos al módulo actual
- Consideraciones multiplataforma
- Rutas del sistema de archivos
- Manejo de los terminadores de línea