Mis apuntes de desarrollo web </>

¿Qué es Node.js?

Entorno de ejecución de JavaScript que permite ejecutar código de JavaScript en el lado del Servidor.

Es especialmente conocido por su capacidad de manejar conexiones de red de manera asíncrona y escalable, lo que lo hace ideal para construir aplicaciones web en tiempo real y servicios de red.

Cuenta con un amplio grupo de bibliotecas y módulos que facilitan el desarrollo de aplicaciones web y de servidor.

Características

Servidor HTTP:
Permite crear servidores web de forma sencilla. Con el módulo http, se puede crear un servidor HTTP básico para manejar solicitudes y respuestas web. Esto es útil para construir aplicaciones web y APIs
Entrada/Salida asíncrona:
Puede manejar múltiples solicitudes de entrada/salida simultáneamente sin bloquear el hilo principal de ejecución. Esto es fundamental para aplicaciones web que necesitan manejar muchas conexiones concurrentes.
Desarrollo de aplicaciones web en tiempo real:
Es muy adecuado para construir aplicaciones en tiempo real, como chats, juegos multijugador, etc. gracias a su capacidad de manejar conexiones de red de manera asíncrona.
Manejo de paquetes y dependencias:
Cuenta con un gestor de paquetes integrado llamado npm (Node Package Manager). Es una herramienta poderosa que permite instalar, gestionar y compartir paquetes de código JavaScript fácilmente.

Patrón de diseño Módulo

Node.js funciona con un patrón en el cual el código se separa en módulos diferentes los cuales se podrán importar y exportar para poder reutilizarlo y no repetirlo.

Módulos

Un modulo es un bloque de código reutilizable cuya existencia no impacta de manera accidental otros bloques de código.

Un módulo contiene funciones, objetos, variables donde se indica cuales serán exportados para ser utilizados por otros programas.

CommonJS (CJS)

CommonJS es la forma clásica para crear un sistema de módulos.

module.exports:
Objeto que el sistema de módulos de Node.js utiliza para determinar qué se exporta desde un archivo de módulo cuando se requiere en otro archivo.
require:
Es una de las funciones principales del sistema de módulos de Node.js la cual se utiliza para cargar y utilizar las funcionalidades exportadas por un módulo, ya sea módulos nativos, módulos creados por el usuario y módulos instalados desde el gestor de paquetes npm.

Ejemplo

Ejemplo módulo

Ejecución

Ejemplo ejecución modulo

Salida

Salida ejecución modulo

ES Modules (ESM)

ES Modules es la forma moderna para crear un sistema de módulos.

export:
Mediante la palabra clave export se crea lo que se llama un módulo de exportación que contiene datos. Estos datos pueden ser variables, funciones, clases u objetos más complejos.
import:
Con la palabra clave import se pueden leer dichos módulos exportados desde otros archivos y utilizar sus elementos en el código del archivo actual.

Ejemplo export (Declaración y exportación)

Ejemplo módulo

Ejemplo export (Exportación post-declaración)

Ejemplo módulo

Ejecución usando import (importación nombrada)

Ejemplo ejecución modulo

Ejecución usando import (importación masiva)

Ejemplo ejecución modulo

Salida

Salida ejecución modulo