> Manuales > Manual de NodeJS

Una inmersión teórica en NodeJS, plataforma para el desarrollo con Javascript del lado del servidor. Qué es node, quiénes lo están usando y por qué es una buena idea aprender Node.JS.

Con este artículo comienza el Manual de NodeJS de DesarrolloWeb.com, que os llevará a lo largo de diversas entregas en vuestros primeros pasos con esta plataforma para desarrollo. Será una serie de artículos que estamos preparando en base a la transcripción de los webcasts #nodeIO, emitidos en DesarrolloWeb.com.

De momento, en los primeros pasos nos encontramos en la Introducción a NodeJS realizada en el primero de los programas de la serie, transmitidos en directo, por hangout, en el canal de Youtube de Desarrolloweb.com. Tenemos que agradecer la presentación a Alejandro Morales @_alejandromg desarrollador web, entusiasta del Open Source y experimentado programador en NodeJS.

NodeJS, conocido habitualmente también con la palabra "node" a secas, surge en 2009 como respuesta a algunas necesidades encontradas a la hora de desarrollar sitios web, específicamente el caso de la concurrencia y la velocidad.

NodeJS es un plataforma super-rápida, especialmente diseñada para realizar operaciones de entrada / salida (Input / Output o simplemente I/O en inglés) en redes informáticas por medio de distintos protocolos, apegada a la filosofía UNIX. Es además uno de los actores que ha provocado, junto con HTML5, que Javascript gane gran relevancia en los últimos tiempos, pues ha conseguido llevar al lenguaje a nuevas fronteras como es el trabajo del lado del servidor.

En este artículo pretendemos explicar qué es Node, para qué se utiliza, por qué es bueno aprenderlo ya y algunos de los proyectos más relevantes creados con esta tecnología, y que muchos de nosotros conocemos.

¿Qué es NodeJS?

"Node Yei es", tal como se pronuncia NodeJS en inglés, es básicamente un framework para implementar operaciones de entrada y salida, como decíamos anteriormente. Está basado en eventos, streams y construido encima del motor de Javascript V8, que es con el que funciona el Javascript de Google Chrome. A lo largo de este artículo daremos más detalles, pero de momento nos interesa abrir la mente a un concepto diferente a lo que podemos conocer, pues NodeJS nos trae una nueva manera de entender Javascript.

Si queremos entender esta plataforma, lo primero que debemos de hacer es desprendernos de varias ideas que los desarrolladores de Javascript hemos cristalizado a lo largo de los años que llevamos usando ese lenguaje. Para empezar, NodeJS se programa del lado del servidor, lo que indica que los procesos para el desarrollo de software en "Node" se realizan de una manera muy diferente que los de Javascript del lado del cliente.

De entre alguno de los conceptos que cambian al estar Node.JS del lado del servidor, está el asunto del "Cross Browser", que indica la necesidad en el lado del cliente de hacer código que se interprete bien en todos los navegadores. Cuando trabajamos con Node solamente necesitamos preocuparnos de que el código que escribas se ejecute correctamente en tu servidor. El problema mayor que quizás podamos encontrarnos a la hora de escribir código es hacerlo de calidad, pues con Javascript existe el habitual problema de producir lo que se llama "código espagueti", o código de mala calidad que luego es muy difícil de entender a simple vista y de mantener en el futuro.

Otras de las cosas que deberías tener en cuenta cuando trabajas con NodeJS, que veremos con detalle más adelante, son la programación asíncrona y la programación orientada a eventos, con la particularidad que los eventos en esta plataforma son orientados a cosas que suceden del lado del servidor y no del lado del cliente como los que conocemos anteriormente en Javascript "común".

Además, NodeJS implementa los protocolos de comunicaciones en redes más habituales, de los usados en Internet, como puede ser el HTTP, DNS, TLS, SSL, etc. Mención especial al protocolo SPDY, fácilmente implementado en Node, que ha sido desarrollado mayoritariamente por Google y que pretende modernizar el protocolo HTTP, creando un sistema de comunicaciones que es sensiblemente más rápido que el antiguo HTTP (apuntan un rendimiento 64% superior).

Otro aspecto sobre el que está basada nodeJS son los “streams", que son flujos de datos que están entrando en un proceso. Lo veremos con detalle más adelante.

¿Quién usa NodeJS?

Existen varios ejemplos de sitios y empresas que ya están usando Node en sitios en producción y algunos casos de éxito que son realmente representativos. Quizás el más comentando sea el de LinkedIn, la plataforma de contacto entre profesionales a modo de red social. Al pasar a NodeJS, LindkedIn ha reducido sensiblemente el número de servidores que tenían en funcionamiento para dar servicio a sus usuarios, específicamente de 30 servidores a 3.

Lo que sí queda claro es que NodeJS tiene un footprint de memoria menor. Es decir, los procesos de NodeJs ocupan niveles de memoria sensiblemente menores que los de otros lenguajes, por lo que los requisitos de servidor para atender al mismo número de usuarios son menores. Por aproximar algo, podríamos llegar a tener 1.000 usuarios conectados a la vez y el proceso de NodeJS ocuparía solamente 5 MB de memoria. Al final, todo esto se traduce en que empresas grandes pueden tener un ahorro importante en costes de infraestructura.

Otros ejemplos, además de LinkedIn son eBay, Microsoft, empresas dedicadas a hosting como Nodester o Nodejitsu, redes sociales como Geekli.st, y muchos más.

Por qué Node.JS es una tecnología que se puede usar ya mismo

Node.JS es una plataforma reciente y que ha sufrido muchos cambios a lo largo de su creación. De hecho, en el momento de escribir este artículo aún no se ha presentado la release 1.0, por lo que muchos desarrolladores la han tomado en cuenta con cierta distancia. Actualmente se encuentra a disposición la versión 0.8.15.

Inicialmente, es cierto que ha sufrido bastantes modificaciones, un tanto radicales, en su API, lo que ha obligado a diversos profesionales que apostaron por Node desde un principio a reciclar sus conocimientos rápidamente y rehacer su código en alguna ocasión. Sin embargo, desde hace tiempo han adquirido el compromiso desde NodeJS a no cambiar el API y continuar con la misma arquitectura, realizando solo cambios a nivel interno.

Esto nos hace entender que es un buen momento para aprender NodeJS sin temor a que lo que aprendamos acabe rápidamente en desuso.

Más tecnologías y frameworks basados en NodeJS

No todo termina con NodeJS, en la actualidad existen diversos proyectos interesantes que basan su funcionamiento en Node y que nos dan una idea de la madurez que está adquiriendo esta plataforma. Es el caso de proyectos como:

Meteor JS: Un framework Open Source para crear aplicaciones web rápidamente, basado en programación con "Javascript puro" que se ejecuta sobre el motor de Node.JS.

Grunt: Un conjunto de herramientas que te ayudan como desarrollador web Javascript. Minifica archivos, los verifica, los organiza, etc. Todo basado en línea de comandos.

Yeoman: Otra herramienta, esta vez basada en Grunt, que todavía ofrece más utilidades que ayudan a simplificar diversas tareas en la creación de proyectos, basados en muchas otras librerías y frameworks habituales como Bootstrap, BackboneJS...

Estos son algunos ejemplos que destacó Alejandro, entre muchos otros que hay en Internet. Son programas basados en Node que nos facilitan labores de desarrollo de aplicaciones web.

Conclusión

En este artículo nos hemos podido encontrar una base teórica de NodeJS, que viene muy bien para saber un poco mejor qué es esta tecnología y cuáles son las ventajas que nos puede traer su uso. Está claro que hay muchas otras cosas que querréis saber sobre Node y que te invitamos a seguir descubriendo con nosotros.

En el siguiente artículo explicaremos dónde se obtiene NodeJS y cómo lo instalas. Todo ello a partir del sitio web del propio NodeJS.

Si deseas ver una introducción a NodeJS en vídeo, finalizamos compartiendo una clase en directo emitida recientemente (2019), en la que podrás encontrar las características principales de "Node" y varios ejemplos prácticos relevantes sobre las cosas que se pueden hacer con esta tecnología y el estilo de desarrollo que nos ofrece.

Alejandro Morales Gámez

Desarrollador web, especialista en JavaScript, Node.js, lua y Ruby.

Manual