El pasado día 27 de diciembre estuve en la charla organizada por el grupo MadridJS sobre Node.js y Heroku. Acudí porque había leído algo sobre el tema y tenía curiosidad por saber de qué trataba realmente este proyecto. En la charla se dió una explicación inicial de lo que es y para qué sirve e incluso se vió algún ejemplo real, pero además se habló de algunos otros proyectos y tecnologías relacionadas con Node.js, como es el manejo de WebSockets con la librería Socket.IO.
A partir de lo visto en dicha charla me ha picado la curiosidad y en lo últimos días he estado buscando información sobre Node.js para poder conocer algo más sobre este proyecto. Node.js lleva la programación en Javascript al lado del servidor. Es una plataforma que permite el desarrollo de servidores de alta concurrencia y que se ejecuta sobre la máquina de Javascript de Google V8. Se basa en el paradigma de programación orientada a eventos de entrada y salida de forma asíncrona.
¿Y cuál es la principal ventaja de Node.js? Pues su rapidez y el menor número de recursos que consume. Un servidor de Node.js se ejecuta en un único hilo y no crea un nuevo proceso o un nuevo hilo por cada petición entrante, con el consumo de recursos que esto supone. Sin embargo, las operaciones en Node.js se ejecutan de forma no bloqueante en base a eventos, por lo que se pueden aprovechar los tiempos muertos de las operaciones de entrada/salida para servir otras peticiones y aumentar la rapidez.
¿Que significa que las operaciones se ejecutan de forma no bloqueante y en base a eventos? Pues que todas las operaciones de entrada/salida se realizan de forma asíncrona. Cuando se llama a una operación de entrada/salida se le pasa una función callback que será el manejador del evento de ejecución y pasa a ejecutarse en segundo plano, continuando con la ejecución del programa. Cuando la operación de entrada/salida haya finalizado saltará el evento correspondiente y se llamará a la función callback que lo maneja, que dispondrá de la información recuperada y podrá trabajar con ella.
Además de los módulos que Node.js incorpora en su instalación, existen multitud de módulos adicionales que puedes ser usados, los cuales se pueden instalar a través de la herramienta de gestión de paquetes de Node.js: NPM (Node Package Manager). Dichos módulos permiten el acceso al sistema de archivos, bases de datos, ofrecen una implementación del patrón MVC... Dichos módulos están organizados según el estándar CommonJS.
En vez de incluir aquí un ejemplo de cosecha propia, voy a remitir a quien quiera profundizar más a “The Node Beginner Book”, un tutorial estupendo para iniciarse en Node.js y empezar a entender su forma de trabajar.
Otras referencias sobre Node.js:
Página oficial de Node.js
Node.js en español
Introducción a Node.js de Rafa Muñoz
Introducción a Node.js en debugmodeon
Understanding Node.js
How to Node
Understanding the Node.js event loop
Colección de enlaces sobre Node.js
Excelente info, todo lo que necesitamos saber de Nodejs en https://www.escuelajavascript.com/todo-lo-que-necesitas-saber-de-nodejs/
ResponderEliminar