#
Es un entorno de ejecución de JavaScript en el lado del servidor que permite a los desarrolladores crear aplicaciones web y de red altamente escalables y eficientes. Aquí tienes algunos conceptos básicos
nvm
👉 controlador de version de Node.jsnvm install <v nroVersion>
👉 instala la version elegidanvm list
👉 muestra la versiones instaladasnvm use <v nroVersion>
👉 activa la version elegidanvm uninstall <v nroVersion>
👉 instala la version elegidanvm alias default node
👉 usa la ultima version instaladaNode.js proporciona un entorno de tiempo de ejecución para JavaScript fuera del navegador, lo que significa que puedes ejecutar JavaScript en el servidor.
Node.js utiliza un modelo de programación orientado a eventos y operaciones de entrada/salida no bloqueante, lo que permite manejar múltiples solicitudes simultáneamente sin bloquear el hilo de ejecución.
Node.js utiliza un sistema de módulos que permite la modularidad en el código. Puedes dividir tu aplicación en archivos pequeños y reutilizables, y luego importarlos según sea necesario en otros archivos.
Es el sistema de gestión de paquetes de Node.js que te permite instalar, compartir y gestionar dependencias de proyectos fácilmente. npm es una de las mayores colecciones de paquetes de código abierto del mundo.
Node.js proporciona una amplia gama de APIs para realizar operaciones de entrada/salida de manera asíncrona, lo que significa que las operaciones pueden continuar mientras otras operaciones están en curso, sin bloquear el hilo de ejecución.
Node.js opera en un solo hilo, pero utiliza un modelo de event-loop que permite manejar múltiples solicitudes simultáneamente. Esto hace que sea eficiente para aplicaciones de red en tiempo real.
Gracias a su modelo de E/S no bloqueante y su capacidad para manejar muchas conexiones simultáneas, Node.js es altamente escalable y adecuado para aplicaciones que requieren un alto rendimiento y concurrencia.
Node.js es comúnmente utilizado para desarrollar APIs RESTful, servidores web y aplicaciones de una sola página (SPA), así como aplicaciones en tiempo real como chat en línea, juegos multijugador y aplicaciones de transmisión de datos.
Existen muchos frameworks y bibliotecas populares construidos sobre Node.js, como Express.js, Socket.io, Hapi.js, Koa.js, entre otros, que simplifican el desarrollo web y la creación de APIs.
Node.js es excelente para el manejo de datos en tiempo real, como el streaming de archivos o la transmisión de video, debido a su capacidad para manejar la E/S de manera eficiente.
Son funciones intermedias que se ejecutan entre la recepción de una solicitud HTTP y el envío de una respuesta. En el contexto de Node.js y frameworks como Express.js, los middlewares pueden realizar tareas como el análisis del cuerpo de la solicitud, la autenticación, la gestión de sesiones, el registro de solicitudes, entre otros.
En JavaScript, un callback es una función que se pasa como argumento a otra función y se ejecuta después de que la función principal ha terminado de ejecutarse. Son comunes en Node.js para manejar operaciones asíncronas como lectura de archivos, solicitudes de red o consultas a bases de datos.
on objetos que representan el éxito o el fracaso eventual de una operación asíncrona y su valor resultante. Las promesas en Node.js proporcionan una forma más limpia y estructurada de manejar operaciones asincrónicas, evitando el “callback hell” y permitiendo un mejor manejo de errores.
Es una sintaxis de JavaScript para trabajar con promesas de manera síncrona, haciéndolas parecer más como código síncrono. Las funciones marcadas con async devuelven automáticamente una promesa y la palabra clave await pausa la ejecución de la función hasta que la promesa se resuelve o se rechaza.
Es una clase en Node.js que permite la implementación de un patrón de diseño de publicación/suscripción para la gestión de eventos. Los objetos EventEmitter pueden emitir eventos y los oyentes pueden suscribirse a esos eventos para ejecutar código específico cuando se emiten.
Es un área de memoria que se utiliza para almacenar datos binarios de longitud fija. Los buffers son comúnmente utilizados en Node.js para trabajar con datos binarios como archivos, imágenes o datos de red.
Es una abstracción en Node.js para leer o escribir datos de manera secuencial. Los streams permiten procesar grandes volúmenes de datos de manera eficiente, ya que no es necesario cargar todo el contenido en memoria de una vez.
El módulo Cluster en Node.js permite crear múltiples procesos hijos que comparten el mismo puerto del servidor. Esto mejora el rendimiento y la escalabilidad al permitir que un servidor Node.js utilice todos los núcleos de la CPU de manera eficiente.
Es una interfaz de aplicación nativa en Node.js que proporciona una forma estable de escribir extensiones en C++ que sean compatibles con múltiples versiones de Node.js. Esto facilita la creación de módulos nativos para Node.js que no dependen de la versión específica de Node.js.
Debugger: Node.js ofrece herramientas integradas de depuración que permiten inspeccionar el estado de ejecución de una aplicación, establecer puntos de interrupción, rastrear variables y ejecutar el código paso a paso para identificar y corregir errores.
`node nomArch`
`node -V`
`node --inspect nomArch`
`node .<comando> `👉 es la consola en Node.js
`npm init`
`npm i/install`
`npm i/install <package>`
`npm i/install <package> --save-dev`
`npm un/uninstall <package>`
`npm run <script>`
`npm ls/list`
`npm outdate`
`npm update <package>`
Actualiza todos los paquetes a sus versiones más recientes según las restricciones en package.json.
Se tiene que actualizar manualmente las DEPENDENCIA en el package.json
`npm cache clean --forc`
`npm -i --g serve`
serve 👉 es como live-server para Node.js
? Ejecuta comandos npm sin necesidad de instalarlos globalmente.
`npx <command>`
npx @11ty/eleventy
npx run build
"build": "npx @11ty/eleventy",
npx start
"start": "npx @11ty/eleventy --serve"
Express es uno de los frameworks más populares para construir aplicaciones web con Node.js.
Métodos: Routing / Middleware / Aplicación / Respuesta
Estos métodos se utilizan para definir las rutas y manejar las solicitudes HTTP.
🔻app.get(path, callback)
Maneja solicitudes HTTP GET. Se usa para OBTENER datos del servidor.
app.get("/ruta", (req, res) => {
res.send("Respuesta a una solicitud GET");
});
🔻app.post(path, callback)
Maneja solicitudes HTTP POST. Se usa para ENVIAR datos al servidor.
app.post("/ruta", (req, res) => {
res.send("Respuesta a una solicitud POST");
});
🔻app.put(path, callback)
Maneja solicitudes HTTP PUT. Se usa para ACTUALIZAR datos en el servidor.
app.put("/ruta", (req, res) => {
res.send("Respuesta a una solicitud PUT");
});
🔻app.delete(path, callback)
Maneja solicitudes HTTP DELETE. Se usa para ELIMINAR datos del servidor.
app.delete("/ruta", (req, res) => {
res.send("Respuesta a una solicitud DELETE");
});
🔻app.patch(path, callback)
Maneja solicitudes HTTP PATCH. Se usa para realizar ACTUALIZACIONES * PARCIALES de los datos.
app.patch("/ruta", (req, res) => {
res.send("Respuesta a una solicitud PATCH");
});
🔻app.all(path, callback)
Maneja todas las solicitudes HTTP para UNA ruta específica.
app.all("/ruta", (req, res) => {
res.send("Respuesta a cualquier tipo de solicitud HTTP");
});
Estos métodos se usan para ejecutar código antes de llegar a la ruta específica.
app.use
:
es extremadamente útil para organizar y modularizar la lógica de la aplicación, permitiendo añadir funcionalidades comunes de manera eficiente y estructurada.app.use(path, middleware)
:
Aplica middleware a todas las rutas que coinciden con el path especificado.app.use("/ruta", (req, res, next) => {
console.log("Middleware ejecutado");
next();
});
app.use(middleware)
:
Aplica middleware a todas las rutas de la aplicación.app.use((req, res, next) => {
console.log("Middleware ejecutado para todas las rutas");
next();
});
Estos métodos se usan para configurar y manejar la aplicación.
app.listen(port, callback)
:
Inicia el servidor en el puerto especificado.app.listen(3000, () => {
console.log("Servidor escuchando en el puerto 3000");
});
app.set(name, value)
:
Establece una variable de configuración.app.set("view engine", "ejs");
app.get(name)
:
Obtiene una variable de configuración.const engine = app.get("view engine");
Estos métodos se usan para enviar respuestas al cliente.
🔻res.send(data)
Envía una respuesta de varios tipos al cliente.
res.send("Hola, mundo");
🔻res.json(data)?
Envía una respuesta en formato JSON.
res.json({ mensaje: "Hola, mundo" });
🔻res.status(code)
Establece el código de estado HTTP para la respuesta.
res.status(404).send("No encontrado");
🔻res.redirect(url)
Redirige la solicitud a una URL diferente.
res.redirect("/nueva-ruta");
🔻res.render(view, data)
Renderiza una vista utilizando el motor de plantillas configurado.
res.render("index", { titulo: "Página de Inicio" });
Estos métodos son fundamentales para trabajar con Express y permiten manejar y responder a las solicitudes HTTP de manera efectiva.