Node.js: primeros pasos
El objetivo de esta sección es construir una pequeña aplicación que exponga una API REST sobre HTTP.
Esta sección asume que contamos con node.js y npm (Node Package Manager) instalados. En caso de no ser así podemos encontrar información de como instalar los mismos en el sitio de node: https://nodejs.org/es/
Creando el proyecto
Comenzaremos creando un nuevo directorio para nuestro proyecto.
$ mkdir noticias-unq
$ cd noticias-unq
Una vez en el directorio invocaremos a npm para crear un archivo (package.json
) que contendrá la información básica de nuestro proyecto (nombre, versión y dependencias)
$ npm init -y
Podemos entonces editar dicho archivo como querramos:
package.json
package.json
En la documentación de npm se encuentra la lista completa de opciones: https://www.npmjs.org/doc/package.json.html
Node.js
Como ya mencionamos Node.js es un entorno de ejecución el cual corre código javascript sobre V8. Utilizaremos el mismo para construir el backend de nuestra aplicación.
Vamos a crear un archivo index.js
con el siguiente contenido:
index.js
Luego editaremos el package.json
para hacer agregar un nuevo comando al que llamaremos start
package.json
Ahora solo resta correr el comando npm start
desde la terminal para probar que todo esté funcionando correctamente.
$ npm start
> [email protected] start /development/noticias-unq
> node -- index.js
Hello world from Node.js
Node.js + ES6
Actualmente la V8, la VM sobre la que corre Node.js no soporta enteramente la especificación de javascript conocida como ES6 (ECMAScript 2015). Una lista detallada de los features que ES6 agrega puede encontrarse en este sitio: http://es6-features.org/
Nos interesa incorporar algunos de estos a nuestro proyecto, por ejemplo:
Dado a que el soporte nativo para varios todavía no se encuentra productivo se utiliza para esto un transpilador que no es otra cosa que un traductor encargada de convertir el código ES6 en ES5 compatible.
Instalando Babel
El transpilador que utilizaremos es babel. Instalaremos el mismo utilizando npm de la siguiente forma.
$ npm install --save-dev babel-cli babel-preset-es2015
npm se encargará de proveernos de los modulos requeridos (babel-cli y babel-preset-es2015 en este caso)
y todos los modulos "transitivos" que estos requieran a su vez. Los modulos descargados serán almacenados en el directorio node_modules
.
Adicionalmente debido a que utilizamos el flag --save-dev
npm actualizará las dependencias de nuestro proyecto para declarar que estamos haciendo uso de dichas herramientas. Podemos ver este cambio reflejado en el archivo package.json
package.json
Versionado
Este tutorial no alcanza al uso de git ni ningún otra herramienta de versionado de código. No obstante es util aclarar que como buena práctica siempre excluíremos del mismo el directorio node_modules
El archivo package.json
si debe ser versionado y a partir del mismo se recreará el directorio node_modules
(al ejecutarse el comando npm install
)
Luego de instaladas las dependencias de Babel deberemos crear el archivo .bashrc
donde configuraremos las opciones de transpilación.
.babelrc
Ejecutando Node.js + Babel
Para correr sencillamente modificamos el archivo package.json
para que el comando start
invoque a babel.
package.json
Luego editamos el archivo index.js
para hacer uso de estos features de ES6.
index.js
Al ejecutar el proyecto obtendremos:
$ npm start
> [email protected] start /development/noticias-unq
> babel-node -- index.js
Hello World from Node.js+ES6