¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Angular y Node.js
  3. La plataforma Node.js
Extrait - Angular y Node.js Optimice el desarrollo de sus aplicaciones web con una arquitectura MEAN
Extractos del libro
Angular y Node.js Optimice el desarrollo de sus aplicaciones web con una arquitectura MEAN
2 opiniones
Volver a la página de compra del libro

La plataforma Node.js

Presentación de Node.js

Node.js es un entorno que permite ejecutar código JavaScript, fuera de un navegador. Cuando se está redactando este libro, se basa en el motor JavaScript V8 desarrollado por Google para sus navegadores Chrome y Chromium. 

Su arquitectura es modular y orientada a eventos. Está fuertemente orientado a la red. Tiene numerosos módulos de red (de los que se muestra a continuación los principales en orden alfabético: DNS, HTTP, TCP, TLS/SSL, UDP), para los principales sistemas operativos (Unix/Linux, Windows, Mac OS). De esta manera, sustituye ventajosamente, en el marco que nos interesa aquí (es decir, la creación y la gestión de aplicaciones web), a un servidor web como Apache.

Creado por Ryan Lienhart Dahl en 2009, este entorno se ha hecho muy popular rápidamente, por sus dos cualidades principales:

  • Su ligereza (resultado de su modularidad).

  • Su eficacia, provocada por su arquitectura monothread (resultado de la gestión orientada a eventos que ofrece de manera nativa el entorno JavaScript). 

Por lo tanto, integrar Node.js en el desarrollo de aplicaciones web forma parte de la lógica actual, que consiste en hacer las operaciones de acceso a los datos lo menos bloqueantes posible (para solventar la problemática llamada «bound I/O» según la que, antes que cualquier otra causa, la latencia global de una aplicación...

Instalación y prueba de Node.js

1. Creación del archivo de prueba

Para probar Node.js, en primer lugar va a crear un código JavaScript que va a ser lo más sencillo posible y lo va a ejecutar con Node.js.

 Por lo tanto, cree el archivo pruebaDeNode.js, que solo comprende una línea de código:

console.log("Prueba de Node"); 

2. Instalación y prueba de Node.js en Ubuntu

 Para instalar Node.js en Ubuntu, lo más sencillo es utilizar el comando curl y el administrador de paquetes en línea de comandos (apt-get):

curl -sL https://deb.nodesource.com/setup_11.x | sudo -E bash 
-sudo apt-get install nodejs 

Observe que en el momento en que se escribe este libro, la versión actual de Node.js es la 11. Para una versión posterior, es suficiente con cambiar su número de versión en el comando de instalación.

 Se puede crear un enlace simbólico llamado node, para lanzar de manera más natural sus servidores:

sudo ln -s /usr/bin/nodejs /usr/bin/node 

 Abra un terminal (shell) y ejecute el archivo de prueba:

node pruebaDeNode.js 

Se muestra la cadena de caracteres «Prueba de Node».

Un procedimiento completo está en línea en la dirección: https://wiki.ubuntu.com/SpanishDocumentation

3. Instalación y prueba de Node.js en Windows

La instalación de Node.js y su prueba en Windows, se van a desarrollar en cuatro etapas:...

La modularidad de Node.js

1. Los módulos y los paquetes

Una de las principales fortalezas de Node.js es ser modular (y principalmente ofrecer numerosos módulos de red). Si algunos de estos módulos se instalan directamente al mismo tiempo que Node.js, la mayor parte se debe instalar bajo demanda.

Durante la creación de una aplicación que exige la instalación de módulos, dos métodos son posibles para realizarla aquí:

  • Directamente con el administrador de módulos npm (y su opción install). 

  • Indirectamente (pero siempre con npm), a través de la especificación de las dependencias de la aplicación (es decir, los módulos necesarios para esto), en un archivo llamado package.json.

Un módulo se utiliza en una aplicación, con la función require():

var moduloEnsuAplicacion = require('<nombreDelModulo>'); 

Su aplicación Node.js se puede reutilizar a su vez como módulo en determinadas condiciones, que se presentarán más adelante.

Detengámonos en un punto un poco sutil: la distinción entre módulos y paquetes. 

Los módulos son las piezas conceptuales de una aplicación Node.js. Un módulo se puede organizar en diferentes códigos JavaScript y depender de otros módulos. De esta manera, todos los recursos necesarios para un módulo (código, archivo package.json que especifica sus dependencias, etc.) se agrupan en un paquete que, de hecho, es una carpeta.

Por lo tanto, si los dos términos son casi intercambiables, el término «módulo» hace pensar más en la funcionalidad global, y «paquete» en la carpeta y la organización de los archivos de código que se encuentran en ella.

a. El administrador de módulos de Node.js: npm

npm (Node.js Package Manager), es el administrador de módulos de Node.js (se instala con éste).

Los módulos se instalan globalmente en la carpeta node_modules, situada a nivel de los directorios de sistema, si se utiliza la opción -g:

npm install -g <module> 

o en caso contrario (sin la opción g) en el directorio actual (pero también en una carpeta llamada node_modules).

b. Especificación de las dependencias: el archivo package.json

Para especificar las dependencias necesarias para...

Securización de un servidor Node.js (protocolo HTTPS)

Si quiere establecer un servidor Node.js HTTPS, el procedimiento es un poco más complicado (en esta sección, las etapas se ilustrarán por medio de los comandos ejecutados en Linux/Ubuntu).

 Antes de todo, instale openssl y pwgen, si todavía no lo ha hecho:

apt-get install openssl  
sudo apt-get install pwgen 

Debe crear:

1. la autoridad de certificación (certificate authority);

2. el certificado que entrega el servidor (server certificate).

Estas operaciones necesitan la creación de una passphrase:

pwgen 20 1 -s > passphrase 

1. Creación de la autoridad de certificación

Una autoridad de certificación es un tercero de confianza que permite autenticar la identidad de aquellos con quién se relaciona.

En este ejemplo, usted será su propia autoridad de certificación (lo que por supuesto, es criticable).

 Genere una clave privada (debe rellenar dos veces la passphrase):

openssl genrsa -des3 -out ca.key 1024 

 Genere el certificado signing request (debe rellenar la passphrase):

openssl req -new -key ca.key -out ca.csr 

 Firme el certificado (debe rellenar la passphrase):

openssl x509 -req -in ca.csr -out ca.crt -signkey ca.key 

2. Creación del certificado

 Genere una clave privada (para esto, debe rellenar dos veces la passphrase):

openssl genrsa -des3 -out server.key 1024 

 Genere el certificado...

Conocimientos adquiridos en este capítulo

A partir de ahora, usted sabe:

  • Crear un servidor Node.js que responda a las consultas HTTP en diferentes métodos, así como un servidor securizado HTTPS.

  • Probar este servidor a través de su navegador o gracias a la herramienta curl que se utiliza en línea de comandos.

  • Crear un módulo para poder reutilizar código JavaScript.

  • Invocarlo en rutas REST, utilizando el módulo express que es un pequeño framework que permite crear aplicaciones web.

  • Utilizar el módulo express para gestionar las plantillas, con el motor de plantillas EJS.

  • Acceder al sistema de archivos del ordenador sobre el que se ejecuta el servidor Node.js para explotar archivos que contienen datos formateados en JSON:

  • Accediendo globalmente a los datos de estos archivos.

  • Accediendo progresivamente a los datos de estos archivos, a través de la utilización de flujo (streams).

  • Configurar las rutas REST y utilizar estos argumentos para filtrar las colecciones JSON.

Aunque todo esto es interesante, por supuesto, es inconcebible manipular los datos almacenados en los archivos del sistema de archivos. Dicho esto, no es cuestión de renunciar a dos puntos:

  • El formateado de los datos en forma de colecciones de objetos JavaScript (esto forma parte integrante del ecosistema).

  • Y la gestión de datos voluminosos.

Por estas dos razones, va a poner en servicio un sistema de gestión...