Qué es NodeJS y primeros pasos

La aparición de Node.js ha supuesto toda una revolución en el mundo de JavaScript. Desarrollado sobre las bases del motor Chrome V8, Node.js es un entorno de código abierto pensado para hacer posible el desarrollo de aplicaciones JavaScript del lado del servidor. Lo que permite que una vez desarrolladas puedan ejecutarse dentro en diferentes sistemas como OS X, Microsoft Windows y Linux.

Node.js también proporciona una nutrida biblioteca con módulos JavaScript que simplifica el desarrollo de aplicaciones web usando este framework en gran medida.

Características de Node.js

Las siguientes son algunas de las características importantes que hacen de Node.js la primera opción para los arquitectos de software.

  • Asíncrono y controlado por eventos: todas las API de la biblioteca Node.js son asíncronas, es decir, sin bloqueo. Esencialmente significa que un servidor basado en Node.js nunca espera que una API devuelva datos. El servidor pasa a la siguiente API después de llamarlo y un mecanismo de notificación de Events of Node.js ayuda al servidor a obtener una respuesta de la llamada API anterior.
  • Muy rápido: al estar construido en el motor JavaScript V8 de Google Chrome, la biblioteca Node.js es muy rápida en la ejecución de código.
  • Sin almacenamiento en búfer: las aplicaciones Node.js nunca almacenan en búfer ningún dato. Estas aplicaciones simplemente generan los datos en fragmentos.
  • Procesos en un solo hilo pero altamente escalable: Node.js utiliza un modelo de una solo hilo con bucle de eventos. El mecanismo de eventos ayuda al servidor a responder sin bloqueos y hace que el servidor sea altamente escalable en comparación con los servidores tradicionales que crean hilos limitados para manejar las solicitudes. Node.js utiliza un solo programa de subprocesos y el mismo programa puede proporcionar servicio a un número mucho mayor de solicitudes que los servidores tradicionales como el Servidor Apache HTTP.
  • Licencia basada en código abierto − Node.js se distribuye gracias a una licencia MIT.

¿Quién usa Node.js?

Gracias a su modelo único de E / S, sobresale en muchas situaciones escalables y en tiempo real que los servidores demandan. Es liviano, eficiente y su capacidad para usar JavaScript tanto en el front-end como en el back-end abre nuevas formas de desarrollo. Es por eso que no es sorprendente que muchos líderes importantes y populares de la industria elijan confiar en Node.js. Nombres como tan importantes como eBay, Netflix, General Electric, GoDaddy, Microsoft, PayPal, Uber, NASA, Medium, Wikipins, Yahoo! o Yammer corren aplicaciones gracias a las capacidades que ofrece Node.js.

Por citar solo un ejemplo de los mencionados. Netflix, es en la actualidad el proveedor de contenidos líder en el mundo y que cuenta en la actualidad con más de cien millones de usuarios. Con semejante volumen de demanda, la experiencia de usuario lo es todo. Así que para hacer frente a la situación y no “morir de éxito” actualmente Netflix hace un uso intensivo de Node.js en sus servidores. La principal razón de esta decisión es debido a su alta tolerancia a fallas y que al ser una plataforma ligera, rápida y robusta lograron una reducción en el tiempo de inicio en un 70%.

Conceptos básicos y primeros pasos:

Para hacer uso de éstas (la librería y el entorno), necesitas instalar Node.js. En lugar de repetir el proceso aquí, te ruego visitar las instrucciones oficiales de instalación. Por favor vuelve una vez que tengas tu versión de Node.js corriendo.

"Hola Mundo"

Abre tu editor favorito y crea un archivo llamado holamundo.js. Nosotros queremos escribir "Hola Mundo" a STDOUT, y aquí está el código necesario para hacer esto:

var http = require('http');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.end('Hello World!');
}).listen(8080);

Graba el archivo, y ejecútalo a través de Node.js:

Abre tu editor favorito y crea un archivo llamado holamundo.js. Nosotros queremos escribir "Hola Mundo" a STDOUT, y aquí está el código necesario para hacer esto:

node holamundo.js

Ahora nuestro ordenador funciona como servidor. Si accedemos a su con nuestro navegador en el puerto 8080, recibiremos un mensaje "¡Hola Mundo!" a cambio. Para comprobarlo Inicia tu navegador favorito y escribe la dirección: http: // localhost: 8080.

Módulos en Node.js

Un interesante concepto a tener en cuenta en Node.js es el concepto de módulo. A grandes rasgos cuando hablamos de módulo nos referimos a un recurso que puede ser más o menos simple o complejo en funcionalidad que contiene un código JavaScript que podemos reutilizar en toda nuestra aplicación.

Es importante destacar que cada módulo en Node.js tiene su propio contexto, por lo que no puede interferir con otros módulos ni contaminar el alcance global. Además, cada módulo se puede colocar en un archivo .js diferente en una carpeta separada.

Existen 3 tipos de módulos: Core, Locales y módulos de terceros.

Los módulos Core incluyen las funcionalidades mínimas básicas de Node.js. Estos módulos principales se compilan en su distribución binaria y se cargan automáticamente cuando se inicia el proceso Node.js. Sin embargo, primero debemos importar el módulo principal para usarlo en su aplicación.

Módulo Core Descripción
http El módulo http incluye clases, métodos y eventos para crear el servidor http Node.js
url El módulo url incluye métodos para la resolución y análisis de URL.
querystring El módulo querystring incluye métodos para manejar cadenas de consulta.
path El módulo de path  incluye métodos para manejar rutas de archivo.
fs El módulo fs incluye clases, métodos y eventos para trabajar con la  E/S de archivo.
util El módulo util incluye funciones de utilidad útiles para programadores.
 
Incluyendo Módulos

Para incluir un módulo, use la función require() con el nombre del módulo:

var http = require('http');

Ahora nuestra aplicación aplicación tiene acceso al módulo HTTP y es posible crear un servidor:

var http = require('http');

var server = http.createServer(function(req, res){

  //nuestro código aquí

});

server.listen(5000); 
Incluyendo tu propio módulo

Del mismo modo podemos añadir nuestro propio módulo igual que en otros lenguajes.

var http = require('http');
var dt = require('./mimodulo);

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.write("The date and time are currently: " + dt.myDateTime());
  res.end();
}).listen(8080);

Node Package Manager (NPM)

La comunidad de Node crea módulos que añaden nuevas funcionalidades que pueden ser utilizados libremente en nuestros proyectos. Estos módulos de terceros se publican como paquetes a través de un repositorio de código abierto llamado NPM. Node Package Manager (NPM) es también una herramienta de línea de comandos que tiene como objetivo el facilitar el proceso de instalación, actualización o desinstalación de paquetes Node.js en nuestra aplicación.

NPM se incluye por defecto con la instalación de Node.js. Después de instalar Node.js, podemos verificar la instalación de NPM escribiendo el siguiente comando en el terminal o en el símbolo del sistema.

C:\> npm -v 
2.11.3

Para instalar un paquete localmente podemos usar NPM mediante el siguiente comando para instalar cualquier módulo de terceros en nuestra carpeta de proyecto local. Todos los módulos instalados usando NPM se instalan en la carpeta node_modules.

npm install <Nombre del paquete>

Conclusión

Node.js, es un framework basado en Javascript, cualquier programador puede aprender sus fundamentos fácilmente. Si ya programas en ese lenguaje o en Java verás muchas que el proceso de adaptación es casi inmediato, con una curva de aprendizaje mínima. Su modelo de entrada y salida impulsado por eventos ayuda mucho en el manejo simultáneo de peticiones y gracias a que opera en un solo subproceso, utilizando el modelo entrada y entrada sin bloqueo, le permite soportar decenas de miles de conexiones al mismo tiempo mantenidas en el bucle de eventos.

Todo esto le hace de Node.js una de las tecnologías más usadas hoy en día, y se ha convertido en una de las plataformas más populares utilizadas para el desarrollo de aplicaciones web, aplicaciones de escritorio y servicios.

Con este artículo esperamos haber despertado tu curiosidad y comiences a escribir sus propias aplicaciones Node.js. Es muy fácil. Ya tienes los conocimientos básicos.