Node.js: Javascript y el inicio al lado oscuro del desarrollo.

Es muy común, cuando uno se inicia en el desarrollo web, comenzar con la parte html, css y javascript, de modo que, comenzamos a desarrollar frontend sin siquiera saberlo. Una vez dentro de este extenso mundo comenzamos a descubrir que existen otros términos como pueden ser backend y fullstack entre muchos otros, los cuales no son nada más que una forma general de llamar a las diferentes áreas necesarias para poder crear una aplicación web, y es entonces donde comprendemos que saber frontend no es nada más que el inicio del camino.

El backend hace referencia al código que corre del lado del servidor y, a diferencia del frontend, este suele presentarse en una serie de diferentes colores y sabores de lenguajes, algunos ejemplos: Java, Python, Ruby, Javascript, Go, Rust, Elixir, etc. Cada uno de estos lenguajes tienen sus respectivos interpretes/compiladores y sus propias herramientas y frameworks. En esta ocasión nos enfocaremos únicamente en Node.js y cómo nos permite desarrollar un sólido backend explotando nuestras ya existentes habilidades en Javascript .

¿Qué es Node.js?

Node.js es el intérprete que corre del lado del servidor encargado de convertir código Javascript a código máquina, esta construido en torno al motor de Javascript V8 de Google y posee la comunidad más grande de desarrolladores debido a su rápida curva de aprendizaje, ya que no requieres aprender un nuevo lenguaje de programación para comenzar a usarlo. Debido a su gran comunidad, a diario se están creando nuevas herramientas y las actualizaciones se encuentran al orden del día, razón por la cual es necesario tener una herramienta que nos permita gestionar todos estos nuevos módulos de una manera fácil y limpia. Para esto se crea npm, el manejador de paquetes de Node que nos permite buscar, instalar, compartir y publicar dependencias y tiene diferentes planes tanto gratis como de paga para acceder a diferentes funcionalidades.

Usando Node.js y npm

Antes de comenzar es necesario tener instalado Node.js, el cual podemos descargar de la página oficial, una vez finalizada la instalación de Node podemos ver que también se instalo npm.

Una forma fácil de verificar esto es abriendo una terminal y escribiendo:

node -v; npm -v

Uno de los ejemplos más claros y básicos de node es la creación de un servidor web usando las dependencias que ya trae instaladas por default:

// Importamos la dependencia http
var http = require('http');

// Crear un servidor http que contesta "Hola mundo" a cualquier petición que se le haga
var server = http.createServer(function (request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.end("Hola mundo\n");
});

// Decimos que el servidor estará escuchando en el puerto 8000
server.listen(8000);

// Imprimir en consola que funcionó!
console.log("Funcionando en http://127.0.0.1:8000/");

Supongamos que ese código lo guardamos en un archivo llamado mundo.js, lo podremos ejecutar con el comando:

node mundo.js

Y si accedemos a http://localhost:8000 lo veremos funcionando, lo que significa que el servidor esta interpretando código Javascript !

npm

Al día de hoy es el manejador de paquetes con mayor cantidad de módulos disponibles ya que cuenta con poco más de 475,000 paquetes y nos facilita la instalación de dependencias necesarias para nuestro proyecto con una serie de simples comandos. Primero deberemos crear el archivo de configuración para el proyecto, esto se logra con:

npm init

El cual nos pedirá información sobre el proyecto (los únicos datos obligatorios son nombre y versión) y la guardara en un archivo llamado package.json, el cual contiene configuraciones relacionadas al proyecto y nos ayuda a seccionar dependencias, de producción o desarrollo.

#Nos permite buscar paquetes si no estamos seguros del nombre
#Tambien podemos buscar en
https://www.npmjs.com/search
npm search bower
#Instalará el paquete en el folder node_modules/
npm install <nombre-paquete>

#Instalará el paquete de manera global (En toda la computadora)
sudo npm install <nombre-paquete> -g

#Igual que install pero crea un nuevo registro en package.json en la sección "dependencies"
npm install <nombre-paquete> --save

#Igual que --save pero en la sección "devDependencies"
npm install <nombre-paquete> --save-dev

Ejemplo de gestión de paquetes

Crearemos un nuevo proyecto con npm init y llenaremos algunos campos, de modo que crearemos un package.json muy parecido a esto:

{
  "name": "prueba-medium",
  "version": "0.0.1",
  "description": "Plataforma de ejemplo",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "prueba",
    "medium",
    "blog",
    "etc"
  ],
  "author": "Laboratoria",
  "license": "ISC"
}

El primer paso será instalar express, el cual es uno de los web framework más usados para node, y guardarlo en la configuración, para esto podemos ejecutar:

npm install express --save

Sabemos que también estaremos creando pruebas para nuestro código. Para ejecutar nuestras pruebas usaremos la dependencia de should, la cual es una libreria para realizar aserciones en el código, también sabemos que las pruebas se realizan durante el desarrollo, entonces no sería necesario tener instalado should en un ambiente de producción, por lo que lo instalaremos con el comando:

npm install should --save-dev

Y si revisamos el proyecto, podemos ver que tenemos un nuevo folder llamado node_modules/. Dentro de esté tendremos un montón de folders, los cuales son necesarios tanto para que express como should funcionen. Si observamos nuestro package.json veremos algo muy parecido a esto:

{
"name": "prueba-medium",
  "version": "0.0.1",
  "description": "Plataforma de ejemplo",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "prueba",
    "medium",
    "blog",
    "etc"
  ],
  "author": "Laboratoria",
  "license": "ISC",
  "devDependencies": {
    "should": "^11.2.1"
  },
  "dependencies": {
    "express": "^4.15.3"
  }
}

Y ahora creamos un archivo llamado index.js con :

var express = require('express');
var should = require('should');
console.log("Instalación exitosa!");

Y lo ejecutamos con:

node index.js

Podemos ver como efectivamente node logra importar las dependencias instaladas de modo que podemos usar estos comandos para importar todas las librerías que nuestro proyecto requiera y dividirlas si son únicas de desarrollo o deberán existir en un ambiente de producción.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.