Introducci贸n

驴Qu茅 es Node.js?

Node.js庐 es un entorno de ejecuci贸n para JavaScript construido con el motor de JavaScript V8 de Chrome. Node.js usa un modelo de operaciones E/S sin bloqueo y orientado a eventos, que lo hace liviano y eficiente. El ecosistema de paquetes de Node.js, npm, es el ecosistema mas grande de librer铆as de c贸digo abierto en el mundo.

Node.js es un entorno de ejecuci贸n de c贸digo abierto basado en el motor de JavaScript V8 de Google Chrome. Permite a los desarrolladores ejecutar c贸digo JavaScript fuera del navegador web, lo que significa que pueden utilizar JavaScript para construir aplicaciones en el lado del servidor. Fue creado por Ryan Dahl en 2009 y desde entonces se ha convertido en una tecnolog铆a ampliamente adoptada y popular en el mundo del desarrollo web.

Historia

La historia de Node.js comienza en 2009 cuando Ryan Dahl, un ingeniero de software, present贸 por primera vez Node.js en el evento "JSConf EU" en Berl铆n. La idea detr谩s de Node.js surgi贸 de la frustraci贸n de Dahl con los servidores web tradicionales que utilizaban el modelo de hilos, que a menudo resultaba en un rendimiento deficiente y problemas de escalabilidad.

Ryan Dahl quer铆a construir un entorno de servidor que pudiera manejar m煤ltiples solicitudes concurrentes de manera eficiente y escalable. Para lograr esto, eligi贸 utilizar el motor V8 de Google Chrome, que es un motor de JavaScript de alto rendimiento. Dahl desarroll贸 una capa de red y E/S sobre el motor utilizando el lenguaje de programaci贸n C++, y lo llam贸 "Node.js".

Fue lanzado oficialmente en 2009 y su enfoque en la asincron铆a y el modelo no bloqueante lo hizo popular r谩pidamente entre los desarrolladores. La comunidad de Node.js comenz贸 a crecer y aportar bibliotecas y m贸dulos adicionales a trav茅s de NPM (Node Package Manager), que se convirti贸 en el gestor de paquetes est谩ndar para Node.js.

En los a帽os siguientes, Node.js continu贸 evolucionando y ganando popularidad. Grandes empresas como LinkedIn, PayPal, Netflix y Walmart lo adoptaron para sus aplicaciones y servicios, lo que contribuy贸 a su crecimiento y aceptaci贸n en la industria.

En 2015, dio un importante paso hacia la madurez con la convergencia de dos proyectos que hab铆an surgido anteriormente: Node.js y io.js. Ambos proyectos trabajaron juntos bajo la iniciativa "Node.js Foundation" para consolidar esfuerzos y unificar la comunidad. Esto llev贸 a la creaci贸n de Node.js v4, que incluy贸 caracter铆sticas y mejoras significativas.

Desde entonces, Node.js ha seguido mejorando y lanzando nuevas versiones de manera regular. Ha continuado siendo una tecnolog铆a popular para el desarrollo de aplicaciones web, servicios en tiempo real, aplicaciones de Internet de las cosas (IoT) y m谩s. La comunidad activa de desarrolladores, las constantes mejoras de rendimiento y la amplia adopci贸n en la industria aseguran que Node.js seguir谩 siendo una herramienta relevante y poderosa para el desarrollo en el futuro.

Algunos videos con m谩s informaci贸n:

Isomorfismo con JavaScript

El isomorfismo es una t茅cnica de programaci贸n que permite ejecutar el mismo c贸digo en el lado del cliente y en el lado del servidor.

Hoy JavaScript, es el 煤nico lenguaje de programaci贸n capaz de ejecutarse en las 3 capas del desarrollo que tiene una aplicaci贸n web:

  1. En el Frontend con el JavaScript de toda la vida, el de los navegadores.
  2. En el Backend con entornos de programaci贸n como Node.js, Deno o Bun.
  3. En la Persistencia de Datos con gestores de bases de datos NoSQL como MongoDB, Couch DB, Firebase, etc.

Incluso hoy con JavaScript gracias a su entorno Node.js podemos controlar dispositivos de Hardware y IoT como controladores y chips tipo Arduino, robots, drones, wearables, electrodom茅sticos y m谩s.

Veamos algunas de las caracter铆sticas m谩s importantes de Node.js en estos contextos de desarrollo.

Node.js en el Frontend:

En el contexto del desarrollo Frontend, Node.js tiene varios usos importantes:

  1. Ejecuci贸n de tareas en el entorno de desarrollo: Es 煤til para ejecutar tareas y scripts durante el proceso de desarrollo frontend. Por ejemplo, se puede utilizar para compilar archivos CSS y JavaScript, optimizar im谩genes, concatenar archivos, minificar c贸digo, y otras tareas comunes que mejoran el rendimiento y la eficiencia de una aplicaci贸n web.
  2. Manejo de paquetes y dependencias: Junto con NPM (Node Package Manager), es ampliamente utilizado para gestionar dependencias y paquetes en el frontend. Con NPM, los desarrolladores pueden instalar y administrar librer铆as y frameworks de JavaScript que se utilizan en el frontend del proyecto.
  3. Entorno de construcci贸n (build environment): Puede ser utilizado como un entorno de construcci贸n para aplicaciones frontend. Es especialmente com煤n en proyectos que utilizan frameworks de frontend como React, Vue.js o Angular, donde se pueden configurar scripts y tareas para compilar, empaquetar y optimizar el c贸digo antes de desplegarlo en producci贸n.
  4. Desarrollo de herramientas frontend: Permite a los desarrolladores crear herramientas y utilidades que facilitan el desarrollo frontend. Por ejemplo, se pueden construir herramientas de generaci贸n de c贸digo, scaffolding (plantillas de proyecto), linters, y otras utilidades para mejorar la calidad y productividad del equipo de desarrollo.
  5. Servidores de desarrollo locales: Al utilizar Node.js, los desarrolladores pueden configurar servidores de desarrollo locales para probar su aplicaci贸n frontend antes de desplegarla en un servidor de producci贸n. Esto les permite trabajar en un entorno seguro y controlado, y realizar cambios en tiempo real sin tener que depender de un servidor web externo.
  6. Pruebas y automatizaci贸n: Es ampliamente utilizado en el desarrollo frontend para realizar pruebas unitarias, pruebas de integraci贸n y pruebas end-to-end. Adem谩s, se puede utilizar para automatizar tareas de prueba, lo que permite a los desarrolladores detectar y solucionar problemas r谩pidamente.
  7. Server-Side Rendering (SSR): Algunos frameworks de frontend, como React y Vue.js, permiten el Server Side Rendering (renderizado del lado del servidor). Node.js es esencial para habilitar este proceso, ya que puede ejecutar el c贸digo de estos frameworks en el servidor y enviar una p谩gina HTML completamente renderizada al cliente, lo que mejora el rendimiento y la experiencia del usuario.

En resumen, Node.js es una herramienta vers谩til y poderosa que desempe帽a un papel crucial en el desarrollo frontend moderno. Permite a los desarrolladores mejorar la eficiencia, gestionar dependencias, automatizar tareas y realizar pruebas para crear aplicaciones m谩s eficientes y robustas.

Node.js en el Backend:

En el contexto del desarrollo Backend, Node.js tiene varios usos importantes:

  1. Basado en JavaScript: Utiliza el mismo lenguaje de programaci贸n, JavaScript, tanto en el lado del cliente (navegador) como en el lado del servidor (Node.js). Esto permite a los desarrolladores utilizar las mismas habilidades y herramientas en ambos entornos.
  2. As铆ncrono y No bloqueante: Utiliza un modelo de entrada/salida sin bloqueo y basado en eventos, lo que permite a las aplicaciones manejar m煤ltiples solicitudes y operaciones simult谩neamente sin esperar a que una operaci贸n termine antes de pasar a la siguiente.
  3. Eficiente y R谩pido: Gracias a su arquitectura no bloqueante, es muy eficiente y escalable, lo que lo hace adecuado para aplicaciones en tiempo real y de alto rendimiento.
  4. Escalabilidad: Se dise帽贸 desde el principio con la escalabilidad en mente. Su enfoque en la asincron铆a y la eficiencia permite que las aplicaciones creadas, escalen f谩cilmente para manejar una mayor carga de trabajo sin aumentar significativamente los recursos del servidor.
  5. Amplia comunidad y ecosistema: Cuenta con una gran comunidad de desarrolladores y una amplia variedad de bibliotecas y paquetes disponibles a trav茅s de NPM (Node Package Manager), lo que facilita la construcci贸n de aplicaciones con funcionalidades avanzadas y reutilizables.
  6. Manejo de solicitudes HTTP: Incluye un m贸dulo http que permite crear f谩cilmente servidores web y manejar solicitudes y respuestas HTTP, lo que lo hace ideal para el desarrollo de aplicaciones web y APIs.
  7. Multi Plataforma: Es compatible con m煤ltiples sistemas operativos, como Windows, macOS y Linux, lo que facilita la portabilidad de las aplicaciones desarrolladas en este entorno.
  8. Uso del mismo lenguaje en el cliente y el servidor: Al utiliza JavaScript tanto en el lado del cliente como en el servidor. Esto simplifica el desarrollo para aquellos que ya est谩n familiarizados con dicho lenguaje, ya que pueden utilizar las mismas habilidades y conocimientos en ambos lados, lo que reduce la curva de aprendizaje.
  9. Ideal para aplicaciones en tiempo real: Gracias a su modelo no bloqueante y su capacidad para manejar muchas conexiones simult谩neas, Node.js es especialmente adecuado para aplicaciones en tiempo real, como chats, juegos en l铆nea, aplicaciones de colaboraci贸n y sistemas de notificaciones.

Estas caracter铆sticas y ventajas hacen de Node.js una opci贸n popular y poderosa para desarrollar aplicaciones web y servidores modernos y eficientes. Su ecosistema vibrante y en constante crecimiento lo convierte en una tecnolog铆a atractiva para desarrolladores de todo el mundo.

Node.js en las Bases de Datos:

Node.js tiene varios usos importantes en el contexto de trabajar con bases de datos:

  1. Conexi贸n y consultas a bases de datos: Node.js permite establecer conexiones con diferentes sistemas de bases de datos, tanto relacionales como no relacionales, por ejemplo MySQL, PostgreSQL, MongoDB, Redis, entre otros. Utilizando bibliotecas y drivers espec铆ficos para cada base de datos, Node.js puede realizar consultas, inserciones, actualizaciones y eliminaciones de datos de manera eficiente.
  2. Desarrollo de APIs para acceso a datos: Se pueden crear APIs (Application Programming Interfaces) que act煤en como intermediarios para el acceso y manipulaci贸n de datos en una base de datos. Estas APIs pueden ser utilizadas por aplicaciones cliente, tanto en el frontend como en otros servicios en el backend, para acceder y gestionar datos almacenados en la base de datos.
  3. Middleware para la manipulaci贸n de datos: En aplicaciones web, Node.js puede actuar como un middleware para realizar tareas de validaci贸n, transformaci贸n y procesamiento de datos antes de guardarlos o recuperarlos de la base de datos. Esto ayuda a mantener la l贸gica de negocio separada del acceso directo a la base de datos y permite una mayor modularidad y reutilizaci贸n de c贸digo.
  4. Cacheo y almacenamiento en cach茅 de datos: Se puede utilizar para implementar estrategias de cach茅, donde los datos frecuentemente accedidos se almacenan en memoria o en bases de datos r谩pidas como Redis. Esto reduce la carga en la base de datos principal y mejora significativamente el rendimiento de la aplicaci贸n, especialmente en aplicaciones con muchas solicitudes concurrentes.
  5. Procesamiento de datos en tiempo real: Es ideal para aplicaciones que requieren procesamiento de datos en tiempo real, como an谩lisis de datos en vivo, actualizaci贸n de datos, notificaciones, etc. Al ser asincr贸nico y no bloqueante, puede manejar grandes cantidades de datos y tareas en tiempo real de manera eficiente.
  6. Migraciones y cambios en la estructura de la base de datos: Con Node.js, se pueden crear scripts para realizar migraciones en la base de datos, lo que permite realizar cambios en la estructura de la base de datos de manera controlada y sin afectar la integridad de los datos existentes.
  7. Integraci贸n con bases de datos externas y servicios: Puede integrarse f谩cilmente con servicios y bases de datos externas a trav茅s de APIs o servicios web. Esto permite la comunicaci贸n con otras aplicaciones y sistemas para acceder y compartir datos de manera segura.

En general, Node.js es una herramienta valiosa para trabajar con bases de datos, ya que proporciona una plataforma eficiente y flexible para el acceso, manipulaci贸n y gesti贸n de datos, lo que contribuye a la construcci贸n de aplicaciones backend m谩s eficientes, escalables y en tiempo real.

Node.js con el Hardware

Node.js tambi茅n tiene aplicaciones interesantes en temas de hardware, permitiendo a los desarrolladores interactuar con dispositivos f铆sicos y utilizar el poder de JavaScript para controlar y manipular hardware en diferentes contextos. Aqu铆 hay algunas 谩reas en las que se utiliza:

  1. Internet de las cosas (IoT): Es una elecci贸n popular para desarrollar aplicaciones y prototipos de IoT. Su naturaleza as铆ncrona y no bloqueante lo hace ideal para interactuar con sensores y actuadores en dispositivos IoT. Puede comunicarse con dispositivos conectados a trav茅s de puertos GPIO (General Purpose Input/Output), UART (Universal Asynchronous Receiver/Transmitter), y otros protocolos de comunicaci贸n, permitiendo a los dispositivos IoT enviar y recibir datos.
  2. Robots y Drones: Se ha utilizado para controlar robots y drones. La capacidad de manejar m煤ltiples tareas en tiempo real lo convierte en una opci贸n atractiva para aplicaciones rob贸ticas. Puede interactuar con sensores, motores y otros componentes para controlar el movimiento y realizar acciones espec铆ficas.
  3. Automatizaci贸n del hogar: Se utiliza en proyectos de automatizaci贸n del hogar, donde se puede conectar y controlar dispositivos electr贸nicos, electrodom茅sticos, iluminaci贸n y otros dispositivos inteligentes a trav茅s de interfaces web o aplicaciones m贸viles.
  4. Impresoras 3D: Se ha utilizado para controlar impresoras 3D. Puede enviar comandos de impresi贸n a trav茅s de un puerto serial o una conexi贸n de red para controlar el proceso de impresi贸n y monitorear el estado de la impresora.
  5. Servidores para dispositivos embebidos: Node.js es una opci贸n viable para implementar servidores en dispositivos embebidos con recursos limitados. Su huella ligera y su eficiencia lo hacen adecuado para manejar solicitudes de red y controlar la comunicaci贸n con otros dispositivos.
  6. Realidad Virtual y Realidad Aumentada: Se utiliza para construir aplicaciones en tiempo real que interact煤an con dispositivos de realidad virtual y aumentada. Puede procesar datos en tiempo real de sensores y c谩maras para proporcionar experiencias inmersivas.
  7. Hardware de prototipado y pruebas: Es 煤til para el prototipado r谩pido y pruebas de concepto en temas de hardware. Los desarrolladores pueden crear f谩cilmente interfaces para interactuar con diferentes componentes y evaluar la viabilidad de nuevas ideas y proyectos.

En resumen, Node.js proporciona una plataforma vers谩til y eficiente para interactuar con hardware, desde dispositivos peque帽os y embebidos hasta robots, drones, y aplicaciones de IoT. Su enfoque en la asincron铆a y el desarrollo r谩pido lo hace una opci贸n popular para proyectos que implican controlar y monitorear dispositivos f铆sicos.

馃敿 Regresar


Instalaci贸n

Tipos de instalaci贸n

Node.js ofrece diferentes tipos de instalaci贸n para adaptarse a las necesidades y preferencias de los usuarios. Los tipos de instalaci贸n m谩s comunes son:

  1. Instalaci贸n Binaria (Binary): Esta es la forma m谩s sencilla de instalar Node.js y es adecuada para la mayor铆a de los usuarios. Consiste en descargar un instalador precompilado espec铆fico para el sistema operativo y la arquitectura del usuario. Los instaladores binarios est谩n disponibles para Windows, macOS y diversas distribuciones de Linux. Solo es necesario descargar el archivo del instalador y seguir el asistente de instalaci贸n para completar el proceso.
  2. Instalaci贸n a trav茅s del Gestor de Paquetes del Sistema (Package Manager): Algunos sistemas operativos y distribuciones de Linux ofrecen Node.js en sus repositorios y permiten instalarlo mediante el gestor de paquetes del sistema. Por ejemplo, en sistemas basados en Debian/Ubuntu, se puede instalar Node.js usando apt, y en sistemas basados en Fedora/RHEL, se puede instalar usando dnf o yum. Esta opci贸n es conveniente para aquellos que prefieren utilizar las herramientas de gesti贸n de paquetes nativas de su sistema.
  3. Instalaci贸n desde el c贸digo fuente (Source): Esta opci贸n es menos com煤n y se utiliza generalmente por desarrolladores avanzados o para personalizar la instalaci贸n de Node.js en sistemas operativos que no tienen un instalador binario disponible. Consiste en descargar el c贸digo fuente desde el repositorio oficial de GitHub, compilarlo y configurar el sistema manualmente.
  4. Manejo de versiones con NVM (Node Version Manager): NVM es una herramienta que permite instalar y administrar m煤ltiples versiones de Node.js en el mismo sistema. Es 煤til cuando necesitas trabajar con diferentes proyectos que requieren versiones espec铆ficas. Se puede instalar en sistemas UNIX, macOS e incluso hay versi贸n para Windows y facilita el cambio entre versiones de Node.js sin tener que desinstalar e instalar manualmente.

Las primeras tres opcines de la lista anterior se conocen tambi茅n como instalaci贸n de tipo Stand Alone ya que instalamos una sola y 煤nica versi贸n de Node.js, a diferencia de lo que nos ofrece NVM, la capacidad de gestionar m煤ltiples de versiones.

Es importante mencionar que la forma de instalar Node.js puede variar seg煤n el sistema operativo y las preferencias del usuario. Para obtener instrucciones detalladas sobre c贸mo instalar Node.js en un sistema espec铆fico, es recomendable consultar la documentaci贸n oficial de Node.js o seguir las gu铆as proporcionadas por la comunidad de desarrollo.

De cualquier manera aqu铆 te dejo un par de enlaces y videos que te servir谩n para instalarlo:

Tipos de versiones

Node.js tiene dos tipos principales de versiones:

  1. Versiones LTS (Long Term Support): Estas son las versiones recomendadas para la mayor铆a de los usuarios, especialmente para aplicaciones y proyectos en producci贸n. Las versiones LTS tienen soporte a largo plazo, lo que significa que recibir谩n actualizaciones de seguridad y correcciones de errores durante un per铆odo m谩s prolongado. Node.js LTS se actualiza cada 6 meses, y cada versi贸n LTS tiene un ciclo de soporte de 30 meses. Esto proporciona a los usuarios tiempo suficiente para planificar y realizar actualizaciones sin tener que lidiar con cambios frecuentes.
  2. Versiones Current (Actuales): Estas son las versiones m谩s recientes de Node.js con las 煤ltimas caracter铆sticas y mejoras. Se lanzan cada 6 meses y tienen un ciclo de soporte m谩s corto en comparaci贸n con las versiones LTS. Estas versiones son ideales para aquellos usuarios que desean experimentar con las 煤ltimas caracter铆sticas y estar a la vanguardia de la tecnolog铆a. Sin embargo, no se recomiendan para entornos de producci贸n cr铆ticos debido a su ciclo de vida m谩s corto y la posibilidad de cambios m谩s frecuentes.

Es importante tener en cuenta que la elecci贸n de la versi贸n de Node.js depende del tipo de proyecto y sus necesidades espec铆ficas. Si est谩s iniciando un nuevo proyecto, es recomendable usar la 煤ltima versi贸n LTS, ya que brindar谩 una mayor estabilidad y soporte a largo plazo. Por otro lado, si ya tienes un proyecto en producci贸n que utiliza una versi贸n LTS m谩s antigua, es posible que desees mantener esa versi贸n y planificar una actualizaci贸n a la siguiente versi贸n LTS en el futuro.

Verificando la instalaci贸n

Una vez que se complete la instalaci贸n, puedes verificar si Node.js y NPM se han instalado correctamente abriendo una ventana de terminal y escribiendo los siguientes comandos:

node -v

npm -v

Si se muestran las versiones de Node.js y NPM en la terminal, significa que la instalaci贸n fue exitosa.

Si has decidido trabajar con NVM, estos son los comandos que m谩s vas a usar:

// para mostrar la ayuda de nvm
nvm --h

// para listar las versiones de node que tienes en nvm
nvm list

// para instalar la versi贸n vX.X.X de node con nvm
nvm install vX.X.X

// para usar la versi贸n vX.X.X de node con nvm
nvm use vX.X.X

// para desinstalar la versi贸n vX.X.X de node con nvm
nvm uninstall vX.X.X

// para asignar la versi贸n vX.X.X como default en nvm
nvm alias default vX.X.X

Recuerda que debes remplazar las X.X.X por la versi贸n que deseas instalar, no vayas a ejecutar el comando con las X's 馃.

馃敿 Regresar


REPL

El REPL (Read-Eval-Print Loop) de Node.js es una herramienta interactiva que permite a los desarrolladores ejecutar y probar c贸digo JavaScript de manera interactiva en tiempo real. Es una caracter铆stica muy 煤til para experimentar con el lenguaje y probar fragmentos de c贸digo antes de incorporarlos en un proyecto m谩s grande. Es similar a la consola interactiva que se encuentra en la mayor铆a de los navegadores web, pero se ejecuta directamente en la l铆nea de comandos del sistema operativo.

Funcionamiento

  1. Read (Leer): El REPL espera a que el usuario ingrese una l铆nea de c贸digo o una expresi贸n JavaScript.
  2. Eval (Evaluar): Una vez que el usuario presiona Enter, el REPL eval煤a la expresi贸n o el c贸digo ingresado.
  3. Print (Imprimir): Despu茅s de evaluar la expresi贸n o c贸digo, el resultado se imprime en la pantalla.
  4. Loop (Bucle): El REPL vuelve a esperar al usuario para ingresar otra l铆nea de c贸digo y repite el proceso.

驴C贸mo acceder?

Para acceder al REPL de Node.js, simplemente abre una ventana de terminal o l铆nea de comandos y escribe node seguido de la tecla Enter. Esto iniciar谩 el REPL, y ver谩s un s铆mbolo de > que indica que est谩s en modo de entrada del REPL. A partir de ah铆, puedes ingresar cualquier c贸digo JavaScript, y el REPL lo evaluar谩 y mostrar谩 el resultado.

Ejemplo de uso

$ node
> 2 + 3
5
> const mensaje = "隆Hola, Mundo!";
undefined
> mensaje
'隆Hola, Mundo!'
> const cuadrado = (num) => num * num;
undefined
> cuadrado(5)
25
> let array = [1, 2, 3, 4, 5];
undefined
> array.map(num => num * 2)
[ 2, 4, 6, 8, 10 ]
> .exit

Para salir del REPL, simplemente escribe .exit y presiona Enter o usa Ctrl + C dos veces (para Windows). Tambi茅n puedes usar .help para ver una lista de comandos adicionales disponibles dentro del REPL.

El REPL de Node.js es una herramienta poderosa para experimentar y depurar c贸digo JavaScript de manera r谩pida y sencilla, y es especialmente 煤til para aprender y practicar conceptos del lenguaje.

馃敿 Regresar


Hola Mundo

Para ejecutar un archivo JavaScript en Node.js, simplemente sigue estos pasos:

  1. Abre una ventana de terminal o l铆nea de comandos en tu sistema operativo.
  2. Navega al directorio donde se encuentra el archivo JavaScript que deseas ejecutar. Puedes hacerlo utilizando el comando cd seguido de la ruta del directorio, por ejemplo:
    cd /ruta/del/directorio
  3. Una vez que est谩s en el directorio correcto, utiliza el comando node seguido del nombre del archivo JavaScript que deseas ejecutar. Por ejemplo, si el archivo se llama "app.js", escribe:
    node app.js
  4. Presiona Enter y Node.js ejecutar谩 el archivo JavaScript. Cualquier salida o resultado del archivo se mostrar谩 en la ventana de terminal.

Si el archivo JavaScript contiene c贸digo v谩lido, Node.js lo ejecutar谩 y mostrar谩 el resultado en la terminal.

Recuerda que, al utilizar Node.js para ejecutar un archivo JavaScript, est谩s ejecutando el c贸digo en el entorno del servidor, que es diferente del entorno del navegador. Por lo tanto, algunas funcionalidades espec铆ficas del navegador, como el manejo del DOM, no estar谩n disponibles en el entorno de Node.js. Sin embargo, tendr谩s acceso a otras funcionalidades, como operaciones de archivo, solicitudes HTTP, acceso a la red y m谩s que en los navegadores no existen.

馃敿 Regresar


Blocking VS Non Blocking

En Node.js, el t茅rmino "blocking" (bloqueante) vs. "non-blocking" (no bloqueante) se refiere a c贸mo el c贸digo se ejecuta en relaci贸n con las operaciones de entrada/salida (E/S). Estas operaciones de E/S pueden incluir lecturas/escrituras de archivos, solicitudes HTTP, conexiones de red, consultas a bases de datos y cualquier otra operaci贸n que implique esperar a que algo suceda, como recibir una respuesta del servidor o leer un archivo del disco.

Modo Blocking

En un modelo de ejecuci贸n bloqueante, una operaci贸n de E/S bloquear谩 la ejecuci贸n del programa hasta que se complete. Durante este tiempo, el hilo de ejecuci贸n se detiene y no puede continuar con otras tareas. Si hay m煤ltiples solicitudes o tareas simult谩neas que requieren operaciones de bloqueo, cada una debe esperar a que se complete la operaci贸n antes de continuar.

Un ejemplo simple ser铆a leer un archivo de forma bloqueante:

const fs = require("fs");
console.log("Inicio del programa");
const data = fs.readFileSync("archivo.txt", "utf8");
console.log(data);
console.log("Fin del programa");

En este caso, la ejecuci贸n se bloquea mientras se lee el archivo y solo despu茅s de que se complete la lectura, se imprimir谩 el contenido del archivo y el mensaje "Fin del programa".

Modo Non Blocking

En contraste, en un modelo de ejecuci贸n no bloqueante, las operaciones de E/S se ejecutan de manera as铆ncrona. Cuando se inicia una operaci贸n, el programa contin煤a con otras tareas en lugar de esperar a que se complete. Cuando esta se completa, se ejecuta una devoluci贸n de llamada (callback) para manejar el resultado.

Un ejemplo no bloqueante ser铆a leer un archivo de forma no bloqueante:

const fs = require("fs");
console.log("Inicio del programa");
fs.readFile("archivo.txt", "utf8", (err, data) => {
  if (err) throw err;
  console.log(data);
});
console.log("Fin del programa");

En este caso, la funci贸n fs.readFile inicia la operaci贸n de lectura y luego contin煤a con la ejecuci贸n del c贸digo sin esperar a que se complete la operaci贸n. Cuando la lectura del archivo se completa, se invoca la devoluci贸n de llamada y se imprime el contenido del archivo. Esto permite que el programa siga ejecutando otras tareas mientras se realiza la operaci贸n de lectura.

Ventajas del enfoque no bloqueante

La arquitectura no bloqueante es fundamental para su alta eficiencia y rendimiento. Al utilizar un solo hilo para manejar m煤ltiples solicitudes, Node.js puede procesar solicitudes concurrentes de manera eficiente y escalable, lo que lo hace ideal para aplicaciones en tiempo real y de alta carga. Adem谩s, el modelo no bloqueante permite aprovechar al m谩ximo los recursos del sistema, ya que el hilo de ejecuci贸n no se queda inactivo esperando operaciones de E/S, sino que se utiliza para otras tareas mientras las operaciones se realizan en segundo plano.

En resumen, la distinci贸n entre blocking vs non-blocking en Node.js es clave para comprender c贸mo se manejan las operaciones de E/S y c贸mo influye en la eficiencia y escalabilidad de las aplicaciones desarrolladas en este entorno. El enfoque no bloqueante es esencial para aprovechar al m谩ximo el rendimiento de Node.js en aplicaciones de tiempo real y de alta concurrencia.

馃敿 Regresar


Single Thread

El concepto de Single Thread (hilo 煤nico) en Node.js se refiere a que, por defecto utiliza un solo hilo de ejecuci贸n para manejar todas las solicitudes y tareas. Esto es diferente de algunos otros entornos de servidor tradicionales que utilizan un modelo de m煤ltiples hilos, donde cada solicitud se maneja en un hilo separado.

En Node.js, el hilo 煤nico es responsable de todas las operaciones y tareas del servidor, incluyendo la ejecuci贸n del c贸digo JavaScript, el manejo de operaciones de entrada/salida (E/S), y la respuesta a las solicitudes de los clientes. Esto incluye la ejecuci贸n de c贸digo en el servidor, la manipulaci贸n de archivos, las consultas a bases de datos, las solicitudes HTTP, entre otras tareas.

驴C贸mo funciona?

El hilo 煤nico de Node.js utiliza un enfoque no bloqueante y as铆ncrono para manejar tareas y operaciones de E/S. Cuando una operaci贸n de E/S se inicia, en lugar de bloquear el hilo y esperar a que se complete, Node.js contin煤a ejecutando otras tareas y eventos. Cuando la operaci贸n de E/S se completa, se activa una devoluci贸n de llamada (callback) para manejar el resultado.

Por ejemplo, cuando Node.js recibe una solicitud HTTP, en lugar de crear un nuevo hilo para manejar la solicitud, el hilo 煤nico iniciar谩 la operaci贸n de E/S para procesar la solicitud y luego continuar谩 manejando otras solicitudes o eventos mientras espera la respuesta del cliente. Esto permite que Node.js maneje m煤ltiples solicitudes concurrentemente utilizando un solo hilo.

Ventajas y desaf铆os

Ventajas

  • Eficiencia: El modelo de hilo 煤nico permite que Node.js utilice recursos del sistema de manera m谩s eficiente, ya que no hay sobrecarga de conmutaci贸n de hilos y cada hilo puede manejar m煤ltiples solicitudes.
  • Escalabilidad: La naturaleza no bloqueante y asincr贸nica de Node.js le permite manejar un gran n煤mero de solicitudes concurrentes de manera eficiente, lo que lo hace altamente escalable.
  • Menos complejidad: El enfoque de hilo 煤nico puede reducir la complejidad y facilitar la depuraci贸n y el desarrollo de aplicaciones.

Desaf铆os

  • Bloqueo de CPU: Si una operaci贸n bloqueante (por ejemplo, una operaci贸n intensiva de c谩lculo) se realiza en el hilo 煤nico, puede bloquear toda la aplicaci贸n, afectando la capacidad de manejar otras solicitudes en ese momento.
  • Necesidad de evitar bloqueo: Los desarrolladores deben tener cuidado de evitar bloquear el hilo 煤nico con operaciones de larga duraci贸n o bloqueantes, ya que esto podr铆a afectar negativamente el rendimiento.

Es importante destacar que, aunque Node.js utiliza un solo hilo para manejar tareas, tambi茅n puede aprovechar m煤ltiples n煤cleos del procesador mediante el uso de la biblioteca cluster, que permite crear m煤ltiples procesos hijos para distribuir la carga entre los n煤cleos del CPU y aprovechar al m谩ximo los recursos de la m谩quina. Esto permite que Node.js mantenga su eficiencia y capacidad de manejo de m煤ltiples solicitudes incluso en sistemas con varios n煤cleos de CPU.

馃敿 Regresar


Event Loop

El Event Loop (bucle de eventos) es uno de los conceptos fundamentales de Node.js que lo hace 煤nico y poderoso. Es la piedra angular de la arquitectura no bloqueante y as铆ncrona de Node.js, lo que permite que el servidor maneje m煤ltiples solicitudes de manera eficiente sin bloquear el hilo de ejecuci贸n.

El Event Loop es una estructura que se encarga de administrar y manejar eventos y tareas en Node.js. Funciona continuamente en segundo plano mientras la aplicaci贸n est谩 en ejecuci贸n, y su objetivo principal es manejar las operaciones de entrada/salida (E/S) y las devoluciones de llamada (callbacks) de manera no bloqueante.

Cuando una operaci贸n de E/S (por ejemplo, una solicitud HTTP, lectura/escritura de archivos o una consulta a la base de datos) se inicia en Node.js, en lugar de bloquear la ejecuci贸n y esperar a que se complete, el Event Loop delega la operaci贸n a un componente externo del sistema operativo y contin煤a ejecutando otras tareas y eventos en el hilo principal.

Cuando la operaci贸n de E/S se completa, el componente externo notifica al Event Loop que la operaci贸n ha terminado. En ese momento, el Event Loop agrega la devoluci贸n de llamada asociada a la operaci贸n de E/S a la cola de eventos y, en alg煤n momento posterior, cuando el hilo principal est谩 libre, el Event Loop procesa la cola de eventos y ejecuta las devoluciones de llamada correspondientes.

Fases del Event Loop

El Event Loop consta de varias fases que se repiten continuamente mientras la aplicaci贸n est谩 en ejecuci贸n:

  1. Fase de Lectura y Ejecuci贸n de Operaciones Externas: En esta fase, el Event Loop inicia operaciones de E/S y solicitudes externas, como lectura/escritura de archivos, operaciones de red y llamadas a bases de datos.
  2. Fase de Ejecuci贸n de Callbacks: En esta fase, el Event Loop procesa las devoluciones de llamada (callbacks) de las operaciones de E/S que se completaron. Las devoluciones de llamada se agregan a la cola de eventos y se ejecutan de manera secuencial.
  3. Fase de Procesamiento de Promesas (Microtask Queue): A partir de Node.js v12, esta fase fue introducida como un microtask queue independiente. Aqu铆 se procesan las promesas y otros microtasks antes de pasar a la siguiente fase del Event Loop. Esto garantiza que las promesas se resuelvan antes de que se contin煤e con el procesamiento de las operaciones externas.
  4. Fase de Comprobaci贸n (Check): En esta fase, se ejecutan ciertos tipos de callbacks, como setImmediate(). Es una oportunidad para ejecutar operaciones m谩s cercanas al final del bucle de eventos.
  5. Fase de Cierre (Close): Esta fase se encarga de manejar las tareas de limpieza y cierre de recursos antes de que la aplicaci贸n se detenga o se cierre.

En resumen, el Event Loop es el componente esencial de la arquitectura de Node.js que le permite manejar operaciones as铆ncronas y no bloqueantes de manera eficiente. Es la clave para el rendimiento y la escalabilidad de Node.js y es lo que lo convierte en una excelente opci贸n para aplicaciones en tiempo real y de alta concurrencia.

Event Loop Node.js

馃敿 Regresar


M贸dulos

En Node.js, los m贸dulos son bloques de c贸digo reutilizables y encapsulados que permiten organizar y separar la funcionalidad de una aplicaci贸n en unidades m谩s peque帽as y manejables. Los m贸dulos permiten que el c贸digo se escriba de manera modular y fomentan las buenas pr谩cticas de desarrollo, como la reutilizaci贸n de c贸digo y la separaci贸n de funcionalidades.

En Node.js, existen dos tipos principales de m贸dulos:

  1. M贸dulos incorporados: Son m贸dulos que vienen preinstalados con Node.js y est谩n disponibles para su uso sin necesidad de instalar nada adicional. Algunos ejemplos de m贸dulos incorporados son fs (file system) para trabajar con archivos, http para crear servidores web y manejar solicitudes HTTP, path para manipular rutas de archivos, entre otros. Puedes usar estos m贸dulos directamente en tu c贸digo sin necesidad de instalarlos.
  2. M贸dulos personalizados: Son m贸dulos creados por los desarrolladores para encapsular y reutilizar c贸digo espec铆fico de una aplicaci贸n. Los m贸dulos personalizados se crean separando funciones, variables o clases en archivos separados y luego se exportan para que otros archivos puedan importarlos y usarlos. Esto se logra utilizando el sistema de m贸dulos de Node.js.

Sistemas de m贸dulos en Node.js

En Node.js, existen dos tipos principales de sistemas de m贸dulos:

CommonJS (CJS)

Es el sistema de m贸dulos que se utiliza por defecto en Node.js. Utiliza las palabras clave require y module.exports (o exports) para importar y exportar m贸dulos, respectivamente.

  • Importar un m贸dulo (require): Para importar un m贸dulo en Node.js, se utiliza la palabra clave require seguida del nombre del archivo o ruta del m贸dulo que se desea importar. Por ejemplo:
const modulo = require("./ruta/al/modulo.js");
  • Exportar un m贸dulo (module.exports o exports): Para exportar un m贸dulo en Node.js, se utiliza la propiedad module.exports o simplemente exports para asignar valores o funciones al objeto que se exportar谩. Por ejemplo:
// modulo.js
const funcion1 = () => {
  // ...
};

const funcion2 = () => {
  // ...
};

module.exports = {
  funcion1,
  funcion2,
};

ECMAScript Modules (ESM)

A partir de Node.js versi贸n 13, se agreg贸 soporte para ECMAScript Modules (ESM), que permite utilizar el formato de importaci贸n y exportaci贸n est谩ndar definido en ECMAScript (el est谩ndar que rige JavaScript).

  • Importar un m贸dulo (import): Para importar un m贸dulo con ESM, se utiliza la palabra clave import seguida del nombre del archivo o ruta del m贸dulo que se desea importar. Por ejemplo:
import modulo from "./ruta/al/modulo.js";
  • Exportar un m贸dulo (export): Para exportar un m贸dulo con ESM, se utiliza la palabra clave export para exportar valores o funciones directamente. Por ejemplo:
// modulo.js
export const funcion1 = () => {
  // ...
};

export const funcion2 = () => {
  // ...
};

Es importante tener en cuenta que para utilizar ESM en Node.js, se debe agregar el atributo "type": "module" en el archivo package.json de tu proyecto, o utilizar la extensi贸n .mjs para los archivos de m贸dulo que utilicen el formato ESM.

Por defecto, CommonJS sigue siendo el sistema de m贸dulos m谩s com煤nmente utilizado en proyectos de Node.js, pero el soporte para ESM permite a los desarrolladores aprovechar las caracter铆sticas m谩s modernas de importaci贸n y exportaci贸n est谩ndar de ECMAScript si as铆 lo desean.

馃敿 Regresar


NPM

NPM (Node Package Manager) es el administrador de paquetes predeterminado para Node.js, y se utiliza para instalar, actualizar y gestionar paquetes y dependencias de terceros en un proyecto.

Comandos NPM

Para sacarle el m谩ximo provecho a NPM, te dejo un enlace hacia su documentaci贸n oficial, de cualquier manera a continuaci贸n te enlisto algunos de los comandos m谩s usados:

  • Iniciar un proyecto:
npm init //Con asistente

npm init -y //Sin asistente
  • Instalando paquetes:
npm install [package]

npm install [package]@3.4.12 //Versi贸n espec铆fica

npm i [package] //shortcut
  • Actualizar paquetes:
npm update [package]
  • Desinstalar paquetes:
npm uninstall [package]

npm uninstall [package]@3.4.12 //Versi贸n espec铆fica

npm un [package] //shortcut

Carpeta node_modules

Cuando ejecutas el comando npm install NPM crea una carpeta llamadanode_modules que es un directorio que se agrega en la ra铆z de un proyecto Node.js cuando se instalan paquetes o dependencias v铆a NPM. Esta carpeta es un componente fundamental en la gesti贸n de dependencias en Node.js y contiene todos los paquetes externos y sus dependencias que se utilizan en el proyecto.

La estructura de la carpeta node_modules puede volverse bastante compleja en proyectos grandes con muchas dependencias. Sin embargo, esta estructura es necesaria para asegurar que todas las dependencias est茅n correctamente organizadas y que no haya conflictos entre diferentes versiones de paquetes.

Es importante tener en cuenta que no es necesario incluir la carpeta node_modules en un sistema de control de versiones (por ejemplo, Git). Esto se debe a que los archivos en node_modules pueden ser f谩cilmente recreados utilizando el archivo package.json y el comando npm install. Por esta raz贸n, se suele agregar la carpeta node_modules al archivo .gitignore o al sistema de ignorar archivos correspondiente para evitar que se incluyan en el control de versiones y, as铆, mantener un repositorio m谩s limpio y liviano.

Archivo package.json

Es un archivo de configuraci贸n fundamental en proyectos de Node.js. Contiene informaci贸n sobre el proyecto, sus dependencias, scripts personalizados y otros metadatos relevantes para el proyecto. Este archivo se encuentra en la ra铆z del directorio del proyecto y es utilizado por NPM para gestionar las dependencias y scripts relacionados con el proyecto.

El archivo package.json es un archivo JSON que contiene una serie de claves y valores. Las claves m谩s comunes incluyen:

  1. name: El nombre del proyecto.
  2. version: La versi贸n actual del proyecto. Sigue un esquema de versionado sem谩ntico (pe, 1.0.0).
  3. description: Una breve descripci贸n del proyecto.
  4. main: El archivo principal que se debe ejecutar cuando se importa el proyecto como un m贸dulo.
  5. dependencies: Un objeto que lista las dependencias de producci贸n del proyecto. Contiene los nombres de los paquetes y las versiones requeridas.
  6. devDependencies: Un objeto que lista las dependencias de desarrollo del proyecto. Contiene los nombres de los paquetes y las versiones requeridas para el desarrollo.
  7. scripts: Un objeto que define scripts personalizados que pueden ser ejecutados desde la l铆nea de comandos con el comando npm run.
  8. author: El nombre del autor o autores del proyecto.
  9. license: La licencia bajo la cual se distribuye el proyecto.

Ejemplo

{
  "name": "mi-proyecto",
  "version": "1.0.0",
  "description": "Una aplicaci贸n sencilla de ejemplo",
  "main": "app.js",
  "dependencies": {
    "express": "4.17.1",
    "lodash": "4.17.21"
  },
  "devDependencies": {
    "jest": "27.1.1"
  },
  "scripts": {
    "start": "node app.js",
    "test": "jest"
  },
  "author": "Tu Nombre",
  "license": "MIT"
}

Uso y funcionalidad del archivo

El archivo package.json tiene varios prop贸sitos importantes:

  1. Gesti贸n de Dependencias: Permite especificar las dependencias del proyecto en las secciones "dependencies" y "devDependencies". Cuando ejecutas npm install basado en este archivo, NPM descarga y guarda todas las dependencias listadas en la carpeta node_modules del proyecto.
  2. Scripts Personalizados: La secci贸n "scripts" permite definir instrucciones personalizadas que se pueden ejecutar utilizando el comando npm run. Por ejemplo, en el archivo anterior, puedes ejecutar npm run start para iniciar la aplicaci贸n y npm run test para ejecutar pruebas con Jest.
  3. Metadatos del Proyecto: Proporciona informaci贸n sobre el proyecto, como su nombre, versi贸n, descripci贸n, autor, licencia, etc. Esto es 煤til para otros desarrolladores y para mantener un registro claro del proyecto.

En resumen, el archivo package.json es un componente esencial en proyectos de Node.js y juega un papel crucial en la gesti贸n de dependencias, configuraci贸n del proyecto y definici贸n de scripts personalizados. Es una parte integral de la estructura de proyectos de Node.js y permite que NPM administre el proyecto de manera eficiente y precisa.

Archivo package-lock.json

Es un archivo generado autom谩ticamente por NPM cuando se instalan o actualizan las dependencias de un proyecto Node.js. Este archivo tiene un prop贸sito espec铆fico y es utilizado para asegurar una instalaci贸n reproducible y consistente de las dependencias del proyecto en diferentes entornos.

Funciones y usos del archivo

  1. Versionado preciso de dependencias: Contiene informaci贸n detallada sobre las versiones exactas de las dependencias que fueron instaladas en el proyecto. Esto incluye las versiones de las dependencias directas e indirectas (dependencias de dependencias) del proyecto. Esto garantiza que las mismas versiones de las dependencias se utilicen en diferentes instalaciones y por diferentes desarrolladores, lo que evita posibles incompatibilidades o sorpresas en la configuraci贸n del proyecto.
  2. Bloqueo de versiones: Act煤a como una especie de "bloqueo de versiones", lo que significa que cuando alguien m谩s instale las dependencias del proyecto utilizando npm install, NPM instalar谩 exactamente las mismas versiones que se encuentran en el archivo package-lock.json. Esto evita problemas donde se podr铆an utilizar versiones m谩s recientes de las dependencias, lo que podr铆a llevar a cambios no deseados o errores en el proyecto.
  3. Mayor consistencia y estabilidad: Se asegura una mayor consistencia y estabilidad en la configuraci贸n de las dependencias. Esto es especialmente 煤til en proyectos colaborativos donde diferentes desarrolladores pueden trabajar en diferentes m谩quinas y sistemas operativos. El archivo package-lock.json garantiza que todos los desarrolladores tengan el mismo entorno de desarrollo.
  4. R谩pida instalaci贸n de dependencias: Al tener informaci贸n precisa sobre las versiones de las dependencias en el archivo package-lock.json, NPM puede realizar instalaciones m谩s r谩pidas y eficientes, ya que no necesita resolver las versiones de las dependencias nuevamente en cada instalaci贸n.

Importante: Es fundamental incluir el archivo package-lock.json en el control de versiones del proyecto (por ejemplo, Git) para garantizar que todos los miembros del equipo tengan acceso a la misma configuraci贸n de dependencias. Al compartir el proyecto con otros desarrolladores o al implementarlo en diferentes servidores, el archivo package-lock.json asegura que las dependencias se instalen de manera coherente y sin cambios inesperados en las versiones.

Tipos de banderas de dependencias

En Node.js y NPM, existen varias banderas u opciones que se pueden utilizar al momento de instalar dependencias. Estas banderas proporcionan diferentes funcionalidades y configuraciones para la instalaci贸n de paquetes y la gesti贸n de dependencias. A continuaci贸n, se enumeran algunas de las banderas m谩s comunes y su prop贸sito:

  1. --save (-S): Esta bandera se usa para guardar la dependencia en la secci贸n "dependencies" del archivo package.json. Por ejemplo:

    npm install express --save
  2. --save-dev (-D): Esta bandera se usa para guardar la dependencia en la secci贸n "devDependencies" del archivo package.json. Por ejemplo:

    npm install jest --save-dev
  3. --global (-g): Esta bandera se usa para instalar la dependencia de forma global en el sistema, lo que la hace accesible para todos los proyectos. Por ejemplo:

    npm install nodemon -g
  4. --production: Esta bandera se usa para instalar solo las dependencias de producci贸n y omitir las dependencias de desarrollo. Por ejemplo:

    npm install --production
  5. --no-save: Esta bandera se usa para evitar que NPM agregue la dependencia al archivo package.json. Es 煤til si solo quieres instalar una dependencia temporalmente sin guardarla en el proyecto. Por ejemplo:

    npm install lodash --no-save
  6. --legacy-peer-deps: Esta bandera se usa para permitir que NPM instale paquetes que presenten advertencias de dependencias obsoletas. Es 煤til si trabajas con paquetes que a煤n no han actualizado sus dependencias.

  7. --prefer-offline: Esta bandera se usa para preferir las versiones descargadas de los paquetes, incluso si est谩n desactualizadas, en lugar de descargar las 煤ltimas versiones desde el registro.

  8. --ignore-scripts: Esta bandera se usa para evitar la ejecuci贸n de scripts definidos en los paquetes durante la instalaci贸n. Puede ser 煤til si no deseas que los scripts personalizados de los paquetes se ejecuten al instalarlos.

  9. --audit: Esta bandera se usa para verificar si las dependencias tienen vulnerabilidades conocidas y proporciona informaci贸n sobre c贸mo solucionarlas.

Estas son solo algunas de las banderas m谩s comunes utilizadas en la instalaci贸n de dependencias con NPM. Pueden ser muy 煤tiles para controlar c贸mo se instalan y administran las dependencias en proyectos de Node.js. Puedes obtener m谩s informaci贸n sobre todas las opciones disponibles ejecutando npm help install desde la l铆nea de comandos.

Comando npx

El comando npx es una herramienta incluida en NPM a partir de la versi贸n 5.2.0. Su funci贸n principal es permitir la ejecuci贸n de paquetes Node.js temporales o instalados globalmente sin la necesidad de instalarlos en tu sistema o proyecto de manera permanente.

Funciones y usos principales

  1. Ejecuci贸n de paquetes temporales: npx se usa para ejecutar paquetes temporales sin tener que instalarlos previamente. Por ejemplo, si hay un paquete disponible en el registro de NPM que solo necesitas usar una vez o de forma espor谩dica, puedes usar npx para ejecutarlo sin la necesidad de instalarlo globalmente o agregarlo a tu proyecto.

    npx create-react-app my-app

    En este ejemplo, npx ejecuta el paquete create-react-app temporalmente para crear una nueva aplicaci贸n de React llamada my-app sin necesidad de instalar el paquete globalmente en el sistema.

  2. Ejecuci贸n de comandos de paquetes instalados globalmente: npx permite ejecutar comandos de paquetes que est谩n instalados globalmente en tu sistema, incluso si no est谩n disponibles en el directorio actual. Esto puede ser 煤til si necesitas acceder a una utilidad de l铆nea de comandos que has instalado globalmente.

    npx nodemon app.js

    En este ejemplo, npx ejecuta el paquete nodemon globalmente para monitorear y reiniciar autom谩ticamente la aplicaci贸n app.js.

  3. Seleccionar versiones espec铆ficas de paquetes: npx permite especificar versiones espec铆ficas de un paquete para ejecutar un comando. Esto puede ser 煤til para probar comandos en diferentes versiones de paquetes sin tener que instalar varias versiones de forma permanente.

    npx mocha@6 test.js

    En este ejemplo, npx ejecuta el paquete mocha en su versi贸n 6 para ejecutar las pruebas definidas en test.js.

En resumen, npx es una herramienta poderosa que facilita la ejecuci贸n de paquetes temporales o instalados globalmente sin la necesidad de instalarlos permanentemente en tu sistema o proyecto. Puedes usar npx para probar nuevas herramientas, ejecutar comandos de paquetes globales o probar versiones espec铆ficas de paquetes de forma temporal y eficiente.

Como puedes ver NPM y todo su ecosistema de elementos, lo hacen una herramienta poderosa que facilita la gesti贸n de dependencias y la instalaci贸n de paquetes, lo que permite que los desarrolladores aprovechen las soluciones existentes y la comunidad de c贸digo abierto para acelerar el desarrollo de sus proyectos.

馃敿 Regresar


Aprende m谩s

Si est谩s interesado en aprender m谩s sobre JavaScript en el lado del servidor, a trav茅s de su poderoso entorno de programaci贸n backend, Node.js, no te pierdas mis cursos totalmente gratuitos en mi canal de YouTube.

隆隆隆Accede ya!!!

Ver Cursos

馃敿 Regresar