Crea tu primera aplicación en NodeJS sin morir en el intento.

Que es Node JS?

Node es un intérprete Javascript del lado del servidor que cambia la noción de cómo debería trabajar un servidor. Su meta es permitir a un programador construir aplicaciones altamente escalables y escribir código que maneje decenas de miles de conexiones simultáneas en una sólo una máquina física.

Por lo tanto gracias a NodeJS podemos crear aplicaciones de todo tamaño, y la verdad creo yo que es la nueva forma de hacer aplicaciones web. Como levantamos un servidor NodeJS? Como creamos nuestra propia aplicación en NodeJS sin morir en el intento?

Bueno este tutorial va dedicado a mi "YO" del pasado, a esa persona pérdida en el espacio sin saber por donde empezar por décima vez (en serio).

Porque NodeJS es tan especial?

NodeJS es especial porque esta creado para interpretar el código Javascript de forma ultra veloz en el lado del servidor, permitiendo que desarrolladores aprovechen la velocidad y la comunicación entre el cliente-servidor ademas de que la programación de ambos entornos sea bastante uniforme y de simple comunicación gracias a programar en el mismo lenguaje (Javascript).

NodeJS utiliza el poder de V8 tecnológia creada por Google utilizada en chrome, un motor que hace posible que este navegador sea uno de los más rápidos, claro que esta tecnológia de V8 fue creada para sacarle provecho al lado del front-end, sin embargo NodeJS cambia la historia y hace posible lo mismo pero en el lado del Back-end.

Entonces, NodeJS corre en el lado del servidor, interpretando Javascript como lo haria un navegador en el lado cliente. Obviamente con sus respectivas herramientas para ser un verdadero servidor.

Su forma de trabajo se basa en non-blocking I/O, y eventos asincronos, para un mejor desempeño, creado en el engine V8 de Google.

Bueno comencemos.

Para instalar NodeJS simplemente debes acceder a su pagina web y descargar el instalador para el sistema operativo de tu computador, este instalador te soluciona todo el procedimiento de tener que instalar Node a mano y desde 0 Aquí el Link.

Luego de haber instalado NodeJS exitosamente debemos conocer un par de comandos muy utilizados en el mundo de Node, los comandos 'npm' y 'node'.

Hablemos del comando 'node'.

El comando 'node' se utiliza en la terminal o linea de comandos para ejecutar distintas operaciones relacionadas a node, las mas comunes, abrir el interpretador de Javascript, REPL (Explicare que es REPL mas adelante por ahora solo debes saber que REPL Permite ejecutar codigo javascript en la consola) o bien levantar el servidor mediante la llamada al comando node, seguido por el nombre de archivo que contiene todas las configuraciones importantes del servidor, como las librerias importadas y el puerto de conexion, lo utilizamos de esta manera:

node server.js  

A continuación si la operación es exitosa o no, deberíamos recibir la respuesta del servidor, claro que antes de ver alguna respuesta, deberíamos haberlas configurados en ese archivo ejecutado, bueno por ahora no necesitaremos entender que es lo que pasa a detalle porque veremos de levantar el servidor desde 0 mas adelante, pero por ahora entiende que el comando "node" ejecuta el archivo javascript recién creado.

En este mencionado archivo tendremos varias cosas, la configuración principal de la aplicación, y la importación de distintos paquetes o plugins creados por otras personas o por nosotros mismos, es importante tomar en cuenta que estos módulos son librerías que nos ahorraran mucho tiempo ya que no tendremos que reinventar todo lo que hará nuestra aplicación, un claro ejemplo de modulo es el paquete de conexión a Facebook, imagínate si es que nosotros tendríamos que inventarnos la comunicación con facebook, seria terrible, la buena noticia es que no tenemos que inventarnos todo eso, seguramente ya alguien lo invento, y si lo invento es muy probable que este en NPM, si es así, seguramente tendremos su documentación, información del proyecto y mucho mas.

Node Package Manager (NPM)

NPM es un gestor de paquetes orientados a extender la funcionalidad de las aplicaciones Node, mediante la descarga o carga de librerías o módulos que fueron desarrollados por distintas personas del mundo del Javascript para ser utilizada por muchas otras. Link a NPM.

NPM

El uso básico de NPM se resume en la gestión de paquetes de Node (instalar, actualizar, eliminar, editar los paquetes), para utilizarlos estos deben ser requeridos en el archivo principal que ejecutaras en node, NPM al ver el paquete requerido por tu archivo, buscará en su base de datos local de tu computador y lo utilizará (Es importante entender que los paquetes son solamente un conjunto de archivos creados con la finalidad de resolver un problema común y que su re-utilización nos evita el trabajo de reinventar su funcionalidad nuevamente), los paquetes y sus dependencias (Paquetes necesitados por otros paquetes) se localizan dentro de un archivo llamado package.json archivo que contendrá los requerimientos indispensables del proyecto.

El archivo package.json se lo puede auto-generar y de una forma bastante práctica, aunque tambien puedes crearlo abriendo un nuevo archivo y escribiendo un json lleno de parámetros importantes para NPM

Entonces, ejecutamos el siguiente comando en la terminal.

npm init  

Al hacerlo, seguramente la terminal te preguntará alguna información importante para el archivo que se creará, el archivo creado tendrá el nombre de package.json y contendrá la siguiente información:

{
  "name": "nombre-del-paquete",
  "version": "0.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Rene Polo <renejpolo@me.com> (http://renepolo.co/)",
  "license": "MIT"
}

podemos ver que se generan por defecto los detalles necesarios para comenzar a utilizar este .json, por ahora no te preocupes de como adicionar más elementos etc etc, ya que lo haremos desde la terminal.

REPL (Read, Eval, Print, Loop)

El REPL de Javascript cumple una función similar a la de la Terminal (en Mac OS X) o linea de comandos (en Windows), ya que la forma en la que se interpretan los comandos sera linea por linea, solo que en este caso mediante el lenguaje Javascript.

De esta manera, cuando tenemos node instalado en nuestro computador, el usuario sera capaz de abrir el REPL simplemente escribiendo 'node'

tu-usuario: node  
>

A continuación podras ver un '>' que indica que se accedió a REPL y ahora se puede escribir código Javascript.

Incluyendo librerías en NodeJS

Como lo hacemos en una pagina común:

<script src = "http://cdn.com/jquery.js"> </script>  

Como importamos librerias en Node.js

Ejemplo numero 1.

var moduloImportado = require('./elModulo.js');  

Ejemplo numero 2.

var _ = require('./underscore.js');' // de esta manera se importa cualquier otra librerira necesaria, las librerias pueden ser encontradas en  [Link a NPM](https://www.npmjs.org).  

Mas adelante hablaremos de como crear un modulo que podamos importar a nuestro primer proyecto de NodeJS

Express, la libreria que utilizaremos para este proyecto

ExpressJS es una de las librerias mas famosas de NodeJS por las herramientas que nos proporciona a la hora de crear una app en NodeJS, Créeme que cuando te digo que nos ayuda muchisimo de verdad lo hace, crear una aplicación sin ExpressJS, es como diseñar una marca en Paint (Se puede pero nos costara un poco más en el corto, mediano y largo plazo) El uso de Express facilita muchísimo el manejo de rutas, puertos, metodos GET, POST, etc. Ya que como principal objetivo pretende convertir NodeJS en algo mas amigable.

Construyendo el esqueleto de nuestra App

A continuación creemos un nuevo archivo
> touch server.js

El comando anterior creara un archivo llamado server.js sin nada adentro, tambien puedes crear el archivo desde sublime como New File.

Importando las primeras librerias
var http = require('http')  
var express = require('express')  

A continuación esto importara la librería http y express en nuestro archivo de servidor

var http = require('http')  

Esta linea lo que hará es gestionar la parte de comunicación http de nuestra app, permitiéndonos levantar el servidor. (lo veremos más adelante)

var app = express()  

Ahora creamos una instancia de express en app, para no manejar 'express()' en cada metodo que queramos utilizar sino 'app', la diferencia la veríamos al hacer esto:

'express().unMetodo' vs 'app.unMetodo' (Esto mas por el tema de estética)  

Ahora asignemos un puerto a nuestro servidor con:

var port = process.env.PORT || 8080  

Esta linea hara una cosa, verificara si esque el entorno de la app contiene un puerto en especifico o si asignaremos nosotros un puerto para acceder a nuestro servidor, en este caso 8080 es un puerto seleccionado por nosotros, en el caso de un servidor, el puerto podra ser asignado por el servidor, por lo que ya no nos seria util el puerto asignado por nosotros, importante de mencionar que '||' significa condicion OR, es decir, si se cumple lo de la izquierda, no pasar al lado derecho (osea al 8080 y tomar directamente el puerto establecido) caso contrario continuar con el 8080.

y ahora que tenemos el puerto y a ambos módulos añadidos a la App, levantemos el servidor:

var server = http.createServer(app).listen(port, function() {  
  console.log('Express server listening on port ' + port);
});

Lo que esta pasando es que uno de los métodos de http esta siendo ejecutado, pasando la App creada como parámetro y posteriormente llamando al método escuchar (listen) para asignar el puerto y un callback que sera devuelto cuando la conexión se haya establecido.

Si todo esta bien, podríamos acceder a nuestro App mediante http://localhost:8080
Si hacemos el intento veremos una pagina en blanco, es por eso que si bien logramos levantar nuestro servidor ahora nos toca crear la parte visual y funcional de nuestra aplicación. Para eso abramos un archivo nuevo, llamémosle 'index.html'

Empecemos con la estructura básica de un html mas un < h1 > Hola Mundo < /h1 >

<!DOCTYPE html>  
<html>  
  <head>
    <meta charset="utf-8">
    <meta name="description" content="">
    <meta name="keywords" content="">
    <meta name="author" content="">
    <title></title>
    <link href="style.css" rel="stylesheet" type="text/css">
    <script src="script.js"></script>
  </head>
  <body>
  <h1> Hola Mundo </h1>
  </body>
</html>  

y posteriormente añadámosle el siguiente comando a nuestro servidor

app.use(express.static(path.join(__dirname, '/public/')))  

'__dirname' es la dirección absoluta de tu app, y '/public/' la dirección donde se encuentra index.html, debes estar seguro de localizar la carpeta de tu index.html para que esto funcione.
Luego vuelves a levantar tu servidor, vuelves a la ruta http://localhost:8080 y podrás ver el Hola Mundo de hace unos minutos atrás, en el momento que veas el saludo, te habrás dado cuenta que creaste tu primera aplicación en NodeJS.

Tu código del servidor debería verse de esta manera:

var express = require('express')  
var http = require('http')  
var app = express()  
var port = process.env.PORT || 8080

app.use(express.static(path.join(__dirname, '/public/')))  
var server = http.createServer(app).listen(port, function() {  
  console.log('Express server listening on port ' + port);
});

Hasta aquí llegamos con la introducción a tu primera App en NodeJS, estaré muy pronto compartiéndote la siguiente parte donde hablaremos de como añadirle rutas a tu aplicación para mostrar diferentes html's, es muy probable de que ya existe un video de este tutorial como del siguiente en mi canal de YouTube, te invito a suscribirte y a estar atento, si tienes consultas, no dudes de mencionarme en twitter como @chitopolo, estaré muy feliz de ayudarte!

Rene J Polo

Read more posts by this author.

Cochabamba - Bolivia

Subscribe to Chito Tech Tips

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!