Dependencias útiles de NodeJS

Librerías más usadas en el entorno NodeJS

NODEMON

Nodemon permite recargar la página cada vez que detecta un cambio en el editor sin necesidad de inicializar continuamente el proyecto. Esta herramienta es realmente útil y eficaz en la etapa de desarrollo, por esta razón, es recomendable instalarla indicando el parámetro -dev para que NPM la instale en la sección de desarrollo.

INSTALAR NODEMON

  1. npm install nodemon -dev

Una vez instalada se puede inicializar el proyecto con el comando nodemon desde un archivo específico o añadirla como tarea en la sección scripts del archivo package.json.  Para verlo mejor a continuación se muestra un ejemplo de cada caso.

Ejemplo de inicialización con nodemon 

  1. nodemon app.js

Ejemplo de inicialización como tarea

  • Se añade la tarea al scripts con un nombre, en el ejemplo, start
  1. {
  2. "name": "proyecto_prueba",
  3. "version": "1.0.0",
  4. "description": "",
  5. "main": "index.js",
  6. "scripts": {
  7. "test": "echo \"Error: no test specified\" && exit 1",
  8. "start": "nodemon app.js"
  9. },
  10. "author": "",
  11. "license": "MIT"
  12. }
  • Desde terminal se llama a la tarea
  1. npm start

Nodemon, por defecto, solamente detecta los cambios de los archivos js y json pero permite detectar cambios en otra clase de archivos, mediante la configuración del archivo package.json,  indicando la extensión a detectar. Manteniendo el ejemplo anterior, se modifica el script de nodemon añadiendo la extensión hbs que hace referencia al motor de plantillas handlebars.

  1. {
  2. "name": "proyecto_prueba",
  3. "version": "1.0.0",
  4. "description": "",
  5. "main": "index.js",
  6. "scripts": {
  7. "test": "echo \"Error: no test specified\" && exit 1",
  8. "start": "nodemon -e hbs app.js"
  9. },
  10. "author": "",
  11. "license": "MIT"
  12. }



HTTP

Dispone de los métodos necesarios para realizar la conexión a internet y viene ya predefinido en la instalación de NodeJS.  A continuación un ejemplo de la creación de un servidor muy básico pero suficiente para  mostrar la sencillez con la que se puede crear un servidor utilizando esta librería.

  1. var http = require("http");
  2. var servidor = http.createServer(function(){
  3. console.log("Existe petición");
  4. })
  5. servidor.listen(3389);
  6. console.log("Iniciando servidor");

Este código permite que al iniciar el servidor devuelva la cadena "Iniciando servidor" y que al realizar una petición desde un navegador al puerto indicado (3389) devuelva la cadena "Existe petición". En los dos casos el resultado lo devuelve por terminal. Para poder visualizar un resultado por el navegador es necesario ampliar el anterior código añadiendo los métodos writeHead para el encabezado y write o end para mostrar el resultado en pantalla como muestra en el código que sigue a continuación.

  1. var http = require("http");
  2. var servidor = http.createServer(function(req,res){
  3. res.writeHead(200,{ "Content-Type":"text/html"});
  4. res.write("Resultado" + req.url );
  5. console.log("Existe petición");
  6. })
  7. servidor.listen(3389);
  8. console.log("Iniciando servidor");

HTTP-ERRORS

Esta librería permite configurar los posibles errores de peticiones http automáticamente.

COOKIE-PARSER

Permite analizar y cachear todas las cookies requeridas

EXPRESS-SESSION

Manejo de sesiones

MORGAN

Permite monitorear las peticiones de la aplicación

PLANTILLAS HANDLEBARS

NODE-SASS-MIDDLEWARE

SERVE-FAVICON

BABELIFY-EXPRESS

Une Babel con Browserify para poder importar módulos en la parte del front.

EXPRESS-GENERATOR

Esta librería además de instalar Express permite crear el andamiaje necesario (scaffolding) de un proyecto en NodeJS solamente con un comando. Para crear un proyecto con esta librería partiendo desde cero, es necesario instalarla de forma global, para así disponer de ella desde cualquier carpeta del sistema.

Instalación de Express-Generator de forma global

  1. npm install express-generator -g
  • Error instalando con la opción global (-g)

En caso de error de permisos, al realizar una instalación de forma global, es necesario crear un nuevo directorio, por ejemplo, .npm-global  y registrarlo en la configuración de NPM tal como muestran las siguientes líneas de código. 

  1. mkdir ~/.npm-global
  2. npm config SET PREFIX '~./npm-global'

Esta configuración debe solucionar el error y permitir instalar la librería.

Registrar Express-Generator

El siguiente paso es añadir el subdirectorio bin del directorio creado y añadirlo a la variable de entorno $PATH para poder disponer de la librería desde cualquier lugar del sistema.

  • Registrar temporalmente

Introduciendo la siguiente línea de código es posible disponer de Express-generator desde cualquier directorio del sistema, sin embargo, en cada reinicio o al cerrar y abrir la terminal es necesario volver a realizar la misma operación.

  1. export PATH=~/.npm-global/bin:$PATH
  • Registrar permanentemente

Para disponer de Express-Generator de forma permanente es necesario editar el documento ~/.profile (o crearlo si no existe) con algún editor de texto e incluirlo al final del archivo.

Se edita el archivo .profile

  1. sudo gedit ~/.profile

Se añade el directorio a la variable de entorno $PATH

  1. export PATH=~/.npm-global/bin:$PATH

CREAR PROYECTO EXPRESS-GENERATOR

Para crear un proyecto con Express-Generator tan solo es necesario introducir la palabra express seguido de las opciones a incluir y por último el nombre del proyecto.

  1. express miProyecto

MOSTRAR OPCIONES

Las opciones permiten configurar el proyecto para un sistema de plantillas, de estilos, git...

  1. express -h

El paquete de plantillas jade que Express-Generator incorpora por defecto está obsoleto, es recomendable añadir el sistema pug o algún otro sistema de plantillas.

  1. express --view=pug miProyecto


Al finalizar la creación del proyecto, la terminal muestra las indicaciones necesarias para iniciar el servidor.

  1. change directory:
  2. $ cd miProyecto
  3. install dependencies:
  4. $ npm install
  5. run the app:
  6. $ DEBUG=miproyecto:* npm start

Al iniciar el servidor, la terminal vuelve a mostrar información especificando el puerto, por el cual, el servidor está escuchando. Ya solamente es necesario acceder con el puerto indicado desde el navegador y comprobar que todo funciona correctamente.

FS

FileSystem permite acceder al sistema de archivos y realizar acciones como copiar, mover, eliminar... No es necesario instalar FS, ya que, al igual que http, ya viene incluido en NodeJS. A continuación se muestran distintos ejemplos con algunos de los métodos más utilizados de esta librería.

Leer archivos

  1. var fs = require("fs");
  2. var read = fs.readFileSync("./archivo.txt", "utf8");
  3. console.log(read);

Mediante el método readFileSync la lectura de archivos se realiza mediante un proceso llamado blocking, esto quiere decir que puede detener o retrasar la ejecución del resto del código mientras el archivo es totalmente leído por el sistema. Para que esto no ocurra y el proceso de lectura se realice de forma asíncrona es necesario realizar la lectura mediante el método readFile, este proceso es denominado non-blocking. A continuación un ejemplo de este método añadiendo además un condicional que permite mostrar un mensaje en caso de error.

  1. var fs = require("fs");
  2. var read = fs.readFile("./archivo.txt", "utf8", function(error,data){
  3. if(error){
  4. console.log("error al leer el archivo");
  5. throw error;
  6. }else{
  7. console.log(data);
  8. }
  9. });

Leer directorios

El método readdir permite mostrar el contenido de una carpeta con el código siguiente.

  1. var fs = require("fs");
  2. fs.readdir("./directorio", (error, data) => {
  3. console.log(data);
  4. })

Este método permite añadir parámetros opcionales y ampliar la información del contenido de la carpeta. A continuación el mismo ejemplo anterior pero se establece la propiedad withFileTypes, esta opción devuelve información que permite distinguir mediante  valores numéricos cual es archivo y cual directorio. Si devuelve 1 es un archivo, en cambio si devuelve 2 es un directorio.

  1. var fs = require("fs");
  2. fs.readdir("./directorio",{withFileTypes:true}, (error, data) => {
  3. console.log(data);
  4. })

Escribir archivos

El método writeFile permite escribir contenido en un archivo y en caso de no existir el archivo automáticamente lo crea en la ruta especificada.

  1. var fs = require("fs");
  2. fs.writeFile("./archivos/texto.txt", "nuevo archivo", (error) => {
  3. if(error){
  4. console.log("error de escritura");
  5. }else{
  6. console.log("OK");
  7. }
  8. })

Si en lugar de escribir datos a un archivo se requiere añadir datos a un archivo ya existente que ya contiene datos, fs dispone del método appendFile que agrega el nuevo contenido a continuación del anterior.

  1. var fs = require("fs");
  2. fs.appendFile("./archivos/texto.txt", " agregando datos al archivo", (error) => {
  3. if(error){
  4. console.log("error de escritura");
  5. }else{
  6. console.log("OK");
  7. }
  8. })

Copiar archivos

La copia de archivos se realiza mediante el método copyFile y de igual forma que los métodos anteriores se pasan los distintos parámetros. El primer parámetro indica la ruta del archivo original, el segundo parámetro indica la ruta y el nombre del nuevo archivo y el tercer parámetro indica la posibilidad de añadir una función callback que permite continuar realizando acciones una vez haya finalizado la copia del archivo.

  1. var fs = require("fs");
  2. fs.copyFile("./img/imagen.jpg", "./img/imagenNueva.jpg", (error) => {
  3. if(error){
  4. console.log("error en la copia de archivos");
  5. throw error;
  6. }else{
  7. console.log("OK");
  8. }
  9. });

Eliminar archivos

Nodejs dispone de un método para eliminar archivos con el mismo nombre que PHP, el método unlink incluye dos parámetros, el primero, que es la ruta del archivo y el segundo, que es un callback que permite comprobar si existe algún error y continuar con el siguiente proceso.

  1. var fs = require("fs");
  2. fs.unlink("./img/imagen.jpg", (error) => {
  3. if(error){
  4. console.log("error eliminando el archivo");
  5. throw error;
  6. }else{
  7. console.log("OK");
  8. }
  9. });

Es importante destacar que una vez eliminado un archivo con este método no existe posibilidad de recuperar el archivo. 

Mover archivos

La librería fs no dispone de un método personalizado para poder mover archivos, pero si permite encadenar métodos de forma síncrona, por tanto, una fórmula posible para mover archivos consiste en copiar un archivo nuevo con el mismo nombre del original y eliminar el archivo original. El código siguiente contiene un ejemplo moviendo una imagen.

  1. var fs = require("fs");
  2. function copiar(ruta, rutaNueva, nombre){
  3. fs.copyFile(ruta+ "/"+nombre,rutaNueva+"/"+nombre,(error) => {
  4. if(error){
  5. console.log(error);
  6. }else{
  7. eliminar(ruta,nombre);
  8. }
  9. })
  10. }
  11. function eliminar(ruta,nombre){
  12. fs.unlink(ruta+"/"+nombre,(error)=> {
  13. if(error){
  14. console.log("error al eliminar");
  15. }else{
  16. console.log("OK");
  17. }
  18. })
  19. }
  20. copiar("./img","./","imagen.jpg");

De esta forma el método copiar copia el archivo a la ruta indicada y si este proceso de copia se realiza con éxito se encadena con el método eliminar que borra el archivo original dando como resultado final el movimiento de un archivo.

ARCHIVOS JSON

Los archivos json (Javascript Object Notation) son archivos de texto plano y de fácil lectura basados en Javascript. Se utilizan mayoritariamente para el intercambio de datos y están sustituyendo a los populares archivos XML, por ser más eficientes y legibles. A continuación un ejemplo de un archivo json muy básico.

usuario.json

  1. {
  2. "nombre": "Juan",
  3. "edad": "50",
  4. "correo":"juan@gmail.com"
  5. }

IMPORTAR JSON

Para importar archivos de tipo json en un entorno NodeJS es necesario realizar la llamada al archivo con el comando require indicando la ruta del archivo, para después hacer uso de sus propiedades como si de un objeto se tratase. 

index.js

  1. var usuario = require("./usuario.json");
  2. console.log(usuario.nombre);
  3. console.log(usuario.correo);


LEER JSON

La lectura de archivos json desde NodeJS ser realiza de igual forma que cualquier otro archivo. Tal como está explicado en esta misma entrada (en el apartado de la librería fs), la lectura se realiza mediante el método readFile. Este método realiza la lectura del archivo obteniendo un conjunto de datos binarios que, para poder manejarlo como archivo json, es necesario aplicarle el método parse del objeto JSON y así acceder fácilmente al contenido del archivo.

index.js

  1. var fs = require("fs");
  2. fs.readFile("./usuario.json", (error,data) => {
  3. console.log(JSON.parse(data));
  4. console.log(JSON.parse(data).nombre);
  5. })


Comentarios: 0

Para poder comentar es necesario iniciar sesión



Este dominio utiliza cookies de terceros para crear estadísticas y publicidad personalizada. Si continúa navegando está aceptando su uso