Middlewares en Node.js

¿Te gustaría aprender Node js desde cero?
Tenemos los cursos que necesitas. ¡Haz clic aquí!

¿Qué es Node.js?

Node.js es un entorno de tiempo de ejecución multiplataforma de JavaScript orientado a eventos asíncronos de código abierto y basado en el motor V8 de Google.

Un dato muy interesante de Node, es respecto a sus creadores, ya que son los mismos quienes originalmente crearon JavaScript, lo cual da mucha confianza para utilizarlo.

Ahora ¿Si JavaScript es un leguaje que se ejecuta de lado del cliente, cómo es que Node.js lo puede utilizar del lado del servidor? Para responder esto, debemos hablar un poco sobre el motor V8.

¿Qué es el motor V8 de JavaScript?

V8 es el nombre asignado al motor de JavaScript que le permite a Google Crome interpretar este lenguaje y ejecutarlo de lado del cliente, Node.js ha tomado este mismo motor del lado del servidor o back end y convierte el código JavaScript en código de máquina.

Esto es una gran ventaja para nosotros los desarrolladores, ya que podemos utilizar el mismo lenguaje (JavaScript) tanto del lado del cliente como el servidor.

Hola mundo en Node.js

¿Cómo funciona Node.js?

Node.js opera mediante un único proceso o hilo de ejecución, dicho hilo administra todo el flujo de trabajo de las solicitudes entrantes a través de tareas o subprocesos asíncronos.

¿Cómo funcionan las tareas asíncronas en Node.js?

Node.js funciona bajo dos principios principalmente:

  • Uso no bloqueante
  • Event-driven I/O (Entradas y salidas controladas o impulsadas por eventos)

Y ¿Estos dos conceptos a que se refieren? A continuación resumo ambos casos.

Cada solicitud de entrada que recibe Node.js es recibida y enviada a una tarea o hilo (threads) asíncrono, el conjunto de estos hilos es considerado un pool de threads.

Node.js utiliza la librería libuv para administrar y controlar todo el pool de threads, dicha librería se encarga de ejecutar el trabajo recibido en cada hilo y una vez completado, emite un evento que es recibido por Node.js, lo que indica que el proceso ha terminado.

Debido a lo anterior, podemos decir que Node.js es un entorno controlado por eventos, ya que cuando Node recibe una serie de eventos de entrada los procesa sin importar que en alguno de ellos exista una tarea bloqueante, Node.js seguirá procesando evento tras, evento.

Como puedes observar, cada tarea es independiente, lo que evita bloqueos entre subprocesos haciendo que Node sea un entorno de ejecución bastante rápido.

تعلم Node.js مجانا من مايكروسوفت لإنشاء تطبيقات الويب | التعلم الحر -  EDLibre

Ahora, respecto al consumo de recursos, este entorno tiene una gran ventaja respecto a otras tecnologías, por ejemplo:

  • Tecnologías tradicionales que tienen la capacidad de implementar servicios web, reciben una solicitud y crean un subproceso por cada solicitud entrante.
  • Node.js, solo crea un solo subproceso, como te mencione anteriormente y, no existe bloqueo de llamadas de entrada y salida, esto nos permite tener un sistema que admite miles de conexiones simúlatenas, sin colapsar la RAM de tu servidor.

Como programadores es muy importante comprender esto, sobre todo si vienes de programar en otros lenguajes de back end, ya que en la mayoría de ellos no existe esta sincronicidad en el hilo principal y, explícitamente debes indicar la programación en diferentes hilos.

Como recomendación, si vas adentrarte en el mundo de Node.js, debes comprender algo llamado promesas en JavaScript (promise in JavaScript), además de como utilizar los famosos callback, estos dos conceptos, creme te ayudarán bastante.

¿Cuáles son las ventajas de Node.js?

Respondamos a esta pregunta a través de la siguiente lista:

  1. La primera ventaja es que Node utiliza JavaScript, lo cual para muchos desarrolladores que lo usan para Front end, les sería menos complicado entender lo que pasa del lado del Back end.
  2. Node.js cuenta con una comunidad enorme, quien da soporte y crea librerías de código abierto que cientos de programadores pueden ocupar en sus proyectos.
  3. Gracias a las características que tiene este entorno de ejecución, es ideal para aplicaciones que requieren una comunicación en tiempo real como los Websockets o aplicaciones de red.
  4. Debido a que solo crea un subproceso, Node es capaz de soportar miles de conexiones simultaneas.
NodeJS y npm, instalación en Ubuntu 20.04 | 18.04 | Ubunlog

¿Cuál es la principal desventaja de Node.js?

La desventaja de Node.js aparece cuando deseamos desarrollar una aplicación que hará uso intensivo del CPU, esto se debe al hecho intrínseco de su arquitectura de manejar un solo subprocesos para todas las conexiones entrantes.

El uso intensivo del CPU en un solo subproceso causa problemas en las nuevas solicitudes entrantes, ya que bloquea las conexiones entrantes al subproceso.

Creo que en este punto ya tienes bastante información respecto al entorno de Node.js ¿Qué te parece si lo comenzamos a utilizar? Para ello primero debemos saber como instalarlo y conocer a NPM.

Instalación de Node.js en Windows

En Windows es bastante sencillo, ya que:

  1. Puedes ir a la página oficial (https://nodejs.org/es/) y descargar el instalador.
  2. Ahora ejecútalo y solo sigue las instrucciones y listo.
  3. Esto lo vemos en el primer capitulo de este curso.

Instalación de Node.js en Linux

En Linux lo podemos instalar a través de la terminal y lo haremos ejecutando los siguientes comandos.

sudo apt-get update
sudo apt-get install nodejs

¿Qué es NPM?

NPM es un gestor de paquetes integrado en Node.js, el cual nos brinda acceso a cientos de librerías que podemos instalar en nuestros proyectos.

Qué tiene de bueno NodeJS? - Blog de arsys.es

Instalando NPM

sudo apt-get install npm

¿Qué podemos hacer con Node.js?

Con Node.js podemos crear poderosas aplicaciones que requieran una gran cantidad de solicitudes de entrada simultaneas, por ejemplo:

  • Páginas web
  • Servicios web
  • Chats
  • Servicios TCP
  • Etcétera.

Te dejo tres ejemplos de lo que puedes hacer con Node.js:

  1. Crea una página web
  2. Envió de correos
  3. Conectar Node.js con MySQL.

Te esperamos en los siguientes artículos en donde hablaremos más acerca de estos temas, los cuales hoy en día son de vital importancia en el mundo de la tecnología.

¿Te gustaría aprender Node js desde cero?
Tenemos los cursos que necesitas. ¡Haz clic aquí!

About Author

NGuerrero

0 0 votos
Article Rating
Suscribir
Notificar de
guest
0 Comments
Comentarios.
Ver todos los comentarios
0
¿Te gusta este articulo? por favor comentax
()
x
Abrir chat
¿Quieres aprender a programar?
Hola 👋,
¿Te interesa información de nuestros cursos?