En esta entrada vamos a ver cómo instalar Node.js, la popular tecnología del lado del servidor. Si aún no sabes lo que es Node.js te recomendamos leer la entrada anterior Qué es Node.js y porque deberías estar usándolo.
También vamos a ver los aspectos básicos del funcionamiento de Node.js montando un pequeño servidor web, que de momento simplemente va a devolverlos el archiconocido “Hola Mundo”, típico de cualquier tutorial de iniciación en informática.
Por supuesto, como comentamos en su momento, Node.js es mucho más que un servidor, y en un futuro veremos muchas más características y funcionalidades. Pero, como ejemplo, nos sirve de excusa para presentar lo básico de Node.js.
Cómo instalar Node.js
En la actualidad instalar Node.js es realmente sencillo. Existen paquetes e instaladores para tanto Windows, Linux y Mac, y también está disponible como contenedor para Docker. En la mayoría de los casos (salvo en algunas distribuciones de Linux) el proceso de instalación consiste en descargar y ejecutar el instalador.
En el caso de Windows, simplemente descargamos y ejecutamos el instalador.
Nos aseguramos de tener marcada la opción de añadir Path. Esto permite llamar a los ejecutables de Node.js (node y npm) desde cualquier carpeta, sin tener que escribir la ruta completa al ejecutable (Ej: C:\program files(x86)..etcetc..\node.exe).
Para comprobar que lo hemos instalado correctamente, abrimos una consola de comandos, y escribimos:
node --version
Deberíamos obtener la versión instalada de Node.js.
Para iniciar el interprete simplemente escribimos
node
Ahora si introducimos comandos de JavaScript, por ejemplo, 2+2, veremos que Node.js procesa las órdenes, devolviendo 4 en nuestro ejemplo.
Muy bonito, aunque terriblemente poco interesante. Ahora mismo mejoramos esto.
Ejecutar un fichero JavaScript
Lógicamente, no vamos a querer introducir nuestro código en el intérprete, si no que querremos guardarlo en uno o varios ficheros. Vamos a ver como ejecutar un fichero JavaScript desde Node.js.
Por una cuestión de organización, vamos a crear una carpeta con nuestros proyectos y una carpeta para cada proyecto. En realidad no es estrictamente necesario para que funcione Node.js, pero es lo mínimo para mantener el orden de nuestros proyectos.
De esta forma, creamos una carpeta, por ejemplo en vuestra carpeta de Documentos o en C:, y la llamamos NodeJs (o ProyectosNodeJs, o como queráis).
Dentro de esta carpeta, vamos a hacer una nueva carpeta para nuestro primer proyecto de Hola Mundo. Llamaremos a esta carpeta ‘hola_mundo’ (de forma muy original).
Dentro de esta carpeta, creamos un archivo que llamaremos ‘hello.js’, y dentro del mismo copiamos el siguiente contenido,
// Mostrar texto por la consola
console.log("Hello World");
Que simplemente muestra por la consola el texto “Hello World”. Ahora, ejecutamos este archivo con Node.js con el siguiente comando,
node hello.js
Veremos que Node.js ejecuta el archivo, mostrando en pantalla “Hello World”.
Ya sabemos ejecutar código desde un fichero JavaScript. Aunque sigue sin ser especialmente interesante, ya que todo el código se está ejecutando en el servidor. Vamos a mejorar esto atendiendo a respondiendo peticiones HTTP realizadas desde un cliente.
Hacer un servidor sencillo en Node.js
Seguimos con nuestro simple ejemplo Hola Mundo en Node.js, montando un servidor que escuche peticiones HTTP GET por un puerto (por ejemplo 8080), y responda a la petición con nuestro mensaje ‘Hola Mundo’.
Para ello, modificamos nuestro fichero hello.js con el siguiente contenido.
// Cargar el modulo HTTP
var http = require('http');
// Configurar una respuesta HTTP para todas las peticiones
function onRequest(request, response) {
console.log("Peticion Recibida.");
response.writeHead(200, {"Content-Type": "text/html"});
response.write("Hola Mundo");
response.end();
}
var server = http.createServer(onRequest);
// Escuchar al puerto 8080
server.listen(8080);
// Poner un mensaje en la consola
console.log("Servidor funcionando en http://localhost:8080/");
Iniciamos nuestro sencillismo servidor web con el mismo comando que antes,
node hello.js
Y comprobamos que Node.js responde correctamente indicando que está aceptando peticiones,
Ahora, en un explorador web llamamos a la dirección localhost:8080, y veremos que Node.js devuelve una simple respuesta HTTP que contiene ‘Hola Mundo’, que el explorador recoge y renderiza para nosotros.
También vemos en la consola de comandos que Node.js nos indica con ‘Petición Recibida’, indicando que una conexión ha sido establecida.
Por tanto, vemos que hemos configurado correctamente un servidor web muy sencillo con Node.js. Ahora podríamos servir un fichero (html, css, js), datos cargados en una base de datos, o incluso encender/apagar una luz, o mover un robot con un microprocesador como Arduino.
¿A que esto empieza a ser más interesante?
El fichero package.son
Hasta ahora hemos guardado el fichero en una carpeta y lanzado el fichero con el ejecutable de Node.js. Sin embargo, lo habitual al trabajar en un proyecto es que dispongamos de un fichero package.son.
Este fichero almacena los datos y configuración más importantes de la App que estamos desarrollando, como por ejemplo el nombre, versión, dependencias, tc.
Podemos crear rápidamente este fichero con el Node Package Manager (npm). Para ello, dentro de nuestra carpeta de proyecto ejecutamos el comando
npm init
NPM nos realiza una serie de preguntas para configurar nuestra App. Podemos modificar estos datos más adelante. De momento, para este ejemplo, con que pulsemos ENTER en todas las preguntas es suficiente.
En la carpeta de nuestro proyecto se crea el fichero package.son, con los datos que hemos introducido.
Ahora vamos a modificar este fichero para indicar que el punto de entrada a nuestra App es nuestro fichero hello.js. Para ello, modificamos el contenido del package.son con lo siguiente.
{
"name": "hola_mundo",
"version": "1.0.0",
"description": "",
"main": "hello.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node hello.js"
},
"author": "",
"license": "ISC"
}
Finalmente, podemos iniciar nuestra aplicación simplemente escribiendo,
npm start
Esto son apenas unas pinceladas sobre el uso de Node.js. En futuras entradas emplearemos frecuentemente Noode.js, y aprenderemos a conectarlo con una base de datos, elaborar un API REST, y usarlo en proyectos de robótica e IoT.