No hay duda que JavaScript es uno de los lenguajes más importantes a la hora de construir
una aplicación web. Desde hace tiempo, JS es el elegido para la parte de front-end. Por otro lado, en la parte oculta o back-end, tradicionalmente tenemos varias
opciones como PHP, Ruby, Python, etc… Pero un día todo esto cambió y JS cruzó
el puente hacia el lado del servidor.
En 2009 Ryan Dahl creó Node.js, y su evolución
está apadrinada por la empresa Joyent. La plataforma está basada en C++ y
JavaScript.
Node.js es un entorno de programación que te
permite correr código JavaScript en el back-end, fuera del browser.
Gracias a Node.js podremos crear nuestros propios servidores web y gestionar su
comportamiento. JavaScript ya no vive solo en el browser y da el salto al
servidor.
Para que JavaScript pueda ejecutarse en el servidor,
el lenguaje necesita ser interpretado. Para ello, esta plataforma hace uso del motor V8 de JavaScript, el mismo que usa Google en el navegador Chrome.
Con Node.js no
tienes que programar todo de cero, ya que viene con muchos módulos útiles. Esto
quiere decir que Node.js es en realidad dos cosas: un entorno de ejecución y
una librería muy completa.
Node.js es ideal
para aplicaciones en tiempo real que hagan uso de datos intensivos y que se
ejecuten a través de dispositivos distribuidos. Utiliza un modelo asíncrono orientado
a eventos. Esto quiere decir, que al igual que sucede con AJAX, todo transcurre
en tiempo real. Cuando se produce el evento, el servidor envía la respuesta sin
que sea necesario recargar la página. Tradicionalmente, el cliente enviaba una
petición al servidor y este respondía, pero para que esta fuera visible, la
página debía recargarse. Ahora la comunicación es bidireccional y cuando sucede
un evento predefinido, el servidor (que puede enviar mensajes en cualquier
momento) envía la respuesta. La magia de Node.js permite que la comunicación se
haga de manera recíproca y todo sucede de forma fluida.
Una aplicación para Node.js se programa sobre un solo hilo que siempre
se encuentra en ejecución (como si tuviéramos un main con un bucle infinito) y debido a esta
arquitectura sólo puede usar una CPU. Para poder trabajar de una forma óptima,
Node.js le pasa todos los trabajos
que le llegan a un pool de threads (construido
con la librería libuv.).
Esto es comparable a la cocina de un gran
restaurante en la hora de máxima afluencia. Cuando un cliente pide un plato, (emite un evento) el camarero (que es el thread ) llega con las comandas (peticiones) a la cocina (pool de threads) y cada cocinero se encarga de hacer el plato que le toque. Cada vez
que un cocinero termina su plato avisará al camarero y el plato se entregará al cliente.
Ventajas de uso:
- Es fácil de usar, sobre todo si tienes experiencia con JavaScript.
- Es software libre. Está liberado bajo la licencia MIT y tiene una comunidad enorme documentando, haciendo tutoriales y creando nuevos módulos.
- Rapidez, flexibilidad
- Ahorro en infraestructura. Cuando LinkedIn migró todo su back-end desde Ruby on Rails hacia Node.js redujo de 30 a 3 su número de servidores.
- Comodidad. Tanto la parte de back-end como la de front-end se
programan en el mismo lenguaje.
- Con Node.js puedes utilizar JavaScript como lenguaje de scripting en tu consola.
- Al estar basado en eventos, toda la filosofía asíncrona que ya se usa con AJAX en el cliente la podemos pasar al servidor.
Desventajas:
- Gran cantidad de librerías disponibles
- A Node.js no le sientan bien los cambios en su API. Es posible que las nuevas versiones te obliguen a hacer cambios constantes en tu código para mantener la funcionalidad.
- Aunque dispone de gran variedad de librerías, todavía no son suficientes.
De todas formas, estos inconvenientes se van solucionando poco a poco y Node.js cuenta con un futuro prometedor.
La evolución de Node.js ha sido muy positiva y con el
tiempo se ha convertido en una plataforma muy estable. Empresas consolidadas
como Yahoo, Microsoft, LinkedIn o eBay son garantía de ello. Por algo será... digo yo.
Enlaces:
Node.js: https://nodejs.org/en/
El libro para
principiantes de Node.js: http://www.nodebeginner.org/index-es.html
Programación eventos: https://es.wikipedia.org/wiki/Programaci%C3%B3n_dirigida_por_eventos
No hay comentarios:
Publicar un comentario