Skip to content

Construyendo su primera aplicación web usando Node.js ☁️

Esta es una traducción que desde EGA Futura ofrecemos como cortesía a toda la Ohana y comunidad de programadores , consultores , administradores y arquitectos de Salesforce para toda Iberoamérica .

El enlace a la publicación original, lo encontrarás al final de este artículo.

En la publicación de blog anterior de esta serie, aprendió qué es Node.js y por qué es importante para los desarrolladores de Salesforce , pero creo firmemente que la mejor forma de aprender es haciendo. Bueno, ahora es el momento de comenzar a construir su primera aplicación web Node.js.

Node.js es ideal para crear aplicaciones web, especialmente API. Entonces, para su primer proyecto, creará una API para una aplicación Lightning Web Components. Para crear la API, deberá invertir algo de tiempo en Trailhead (¡y obtener una nueva insignia en su perfil!), Donde hay un gran proyecto que le enseñará cómo crear una aplicación web utilizando Lightning Web Components Open. Fuente . Adelante, trabaje en ese primer proyecto y vuelva aquí cuando esté listo; construirá la API utilizada en ese proyecto para servir los datos de la sesión, y luego la implementará en Heroku .

Aplicación de código abierto Lightning Web Component implementada en Heroku

Es posible que haya notado que al crear el módulo de servicio de datos de este proyecto, se le dio una URL ( https://conference-lwc-app.herokuapp.com/api/sessions ). Si realiza una solicitud HTTP GET a esa URL, obtendrá una respuesta JSON con los datos que se mostrarán en la interfaz de usuario, pero el proyecto no le enseña de dónde provienen estos datos o cómo construir ese servicio de API. Bueno, hoy aprenderá cómo crear una aplicación Node.js que servirá esos datos a su aplicación LWC OSS.

 const URL = 'https://conference-lwc-app.herokuapp.com/api/sessions';
dejar sesiones = [];
exportar const getSessions = () => buscar (URL) .entonces (respuesta => { if (! response.ok) { lanzar nuevo Error ('No hay respuesta del servidor'); } return response.json (); }) .entonces (resultado => { sesiones = resultado.datos; sesiones de retorno; });

API de sesiones de obtención de código JavaScript

Instalación de Node.js

Node.js es un tiempo de ejecución de JavaScript multiplataforma y puede instalarlo en Windows, Linux y MacOS. Hay varias formas de instalar Node en el sistema operativo que elija. Aquí hay un par de opciones:

Instalador oficial

Para obtener el instalador oficial, puede ir al sitio web oficial de Node.js y descargar el instalador para su sistema operativo. Se recomienda utilizar siempre el canal de lanzamiento LTS (Long Term Support) para proyectos que irán a producción; el canal actual es bueno para el aprendizaje y la experimentación.

Usando Volta

Mi forma favorita de instalar Node.js es usando un administrador de versiones. La mayoría de nuestro equipo aquí en Salesforce está usando Volta, y es el que recomiendo que use hoy. ¿Por qué? Bueno, le permite administrar múltiples versiones de Node y cambiarlas usando la volta o especificando la versión en un archivo de configuración. Es muy útil cuando se desarrolla una aplicación destinada a versiones anteriores o para probar nuevas funciones en el canal de lanzamiento actual.

Si desea instalarlo, puede ir a https://volta.sh e instalar Volta en su sistema operativo. Para los basados en Unix (Linux, MacOS), puede ejecutar el siguiente comando en su terminal:

 curl https://get.volta.sh | intento

Para Windows, puede ir a https://docs.volta.sh/guide/getting-started y asegúrese de consultar la sección Introducción> Instalación de Windows.

Después de instalar Volta, asegúrese de ir a su terminal y ejecutar:

 nodo de instalación de volta

Esto instalará la última versión de Node.js en su sistema operativo, antes de continuar, asegurémonos de que instaló Node.js correctamente en su computadora ejecutando los siguientes dos comandos desde su terminal:

Salida de la versión de nodo y npm

El node es el que usará para ejecutar sus aplicaciones, y también se puede usar como un REPL (bucle de lectura-evaluación-impresión) para evaluar expresiones de JavaScript en su terminal. El npm es el que usará para interactuar con el ecosistema Node y JavasScript, y con esto, podrá instalar dependencias de terceros, arrancar sus proyectos Node.js y ejecutar scripts, como test , build , y start , dentro de su proyecto. Hay un excelente artículo de Philippe de Ozil que explica scripts personalizados en un proyecto Node.js.

Construyamos su primer proyecto Node.js

Comencemos creando una carpeta para su proyecto (puede llamarlo conference-api ) y luego dentro de esa carpeta, ejecute el siguiente comando para inicializar un proyecto npm:

 npm init

Este comando hará algunas preguntas sobre su proyecto, como el name , la version , la description , etc., y luego creará un package.json , un archivo descriptor que contiene información de metadatos y dependencias sobre su proyecto Node.js.

Creación del proyecto Node.js desde la línea de comandos

Ahora que tiene una carpeta para su aplicación, descarguemos los datos que serán servidos por nuestra API REST. Puede descargar el sessions.json archivo de la aplicación de conferencia LWC en el proyecto del Sendero: https://conference-lwc-app.herokuapp.com/api/sessions , y asegúrese de guardarlo en una carpeta nueva llamada data . Si tiene un sistema operativo basado en Unix como MacOS o Linux, puede ejecutar el siguiente comando para hacerlo:

 curl https://conference-lwc-app.herokuapp.com/api/sessions -o sesiones.json

Antes de implementar un servidor Node.js, aprendamos cómo puede cargar el archivo JSON desde el sistema de archivos. Te mostraré dos formas diferentes de hacerlo, una sincrónica y otra asincrónica usando Promises y async / await.

El enfoque sincrónico es bueno si se va a ejecutar solo una vez, por ejemplo, al inicio del servidor Node.js. Pero no se recomienda si se ejecutará cada vez que ingrese una nueva solicitud. Eso se debe a la naturaleza asincrónica de Node.js y cómo se maneja el bucle de eventos de JavaScript. Si está realizando operaciones síncronas en una ruta activa (un controlador de solicitudes), el bucle de eventos se bloqueará y evitará que se realicen otras operaciones simultáneamente.

Se recomienda el enfoque asincrónico si el archivo se cargará cada vez que ingrese una nueva solicitud. Dado que aquí se usa un patrón asincrónico como Promises y async / await, no hay riesgo de bloquear el bucle de eventos.

Leer un archivo de forma sincrónica

Node.js viene con un conjunto de diferentes módulos centrales, donde puede realizar múltiples tipos de operaciones como sistema de archivos, redes (tcp / udp, http / https, dns), criptografía, etc. Puede aprender más sobre los diferentes módulos centrales por visitando la documentación de la API de Node.js.

Para leer un archivo, necesitará dos módulos principales: fs para realizar operaciones del sistema de archivos con el método readFileSync path para especificar el nombre del archivo a leer usando operaciones de ruta multiplataforma.

 // Requerir módulos `core` y asignarlos a constantes
const fs = require ('fs');
const ruta = require ('ruta'); // Defina el nombre del archivo uniendo el directorio actual y data / sessions.json
const sessionFilename = ruta.join (__ dirname, 'datos', 'sesiones.json');
// Leer el contenido del archivo como una cadena `utf8` const SessionFile = fs.readFileSync (SessionFilename, 'utf8');
// Analizar la cadena `utf8` como un objeto JSON
sesiones const = JSON.parse (archivo de sesiones);
// Haz algo con las sesiones

server.js leyendo el archivo Session.json sincrónicamente

Tenga en cuenta que en este ejemplo, estamos usando el readFileSync , que como su nombre lo indica, lee el archivo sincrónicamente. Como mencioné antes, esto bloqueará el bucle de eventos mientras lee el archivo, por lo que no se recomienda colocar ese fragmento de código dentro de un controlador de ruta. Un controlador de ruta es una función que se ejecutará cada vez que ingrese una nueva solicitud a nuestra aplicación web, y usted escribirá una más tarde para el servidor web. Pero antes de entrar en esa parte, escribamos una función asincrónica para leer el archivo usando Promises y async / await.

Leer un archivo de forma asincrónica

Según MDN , una Promise es un objeto que representa la eventual finalización (o falla) de una operación asincrónica y su valor resultante. async / await es solo una construcción sintáctica del lenguaje JavaScript para realizar operaciones asincrónicas con Promises como si fueran declaraciones "sincrónicas". Parece un código síncrono, pero no bloquea el bucle de eventos (y eso es lo que quiere de ahora en adelante cuando escriba aplicaciones concurrentes de Node.js).

 // Requerir módulos `core` y asignarlos a constantes
// Requiere el módulo `fs / promises`, todos los métodos devolverán Promises.
const fs = require ('fs / promises');
const ruta = require ('ruta'); // Defina el nombre del archivo uniendo el directorio actual y data / sessions.json
const sessionFilename = ruta.join (__ dirname, 'datos', 'sesiones.json'); async function routeHandler () { // Leer el archivo usando async / await como una cadena `utf8` const sessionFile = aguardar fs.readFile (sessionFilename, 'utf8'); // Analizar la cadena `utf8` como un objeto JSON sesiones const = JSON.parse (archivo de sesiones); // Haz algo con las sesiones
}

server.js leyendo el archivo Session.json de forma asincrónica

Varias cosas para notar aquí. Primero, requerimos el fs/promises , y algunas de las core de Node.js tienen una contraparte prometida que se puede usar con async / await. En segundo lugar, dado que estamos usando async / await, necesitamos envolver la operación asincrónica dentro de una función async Luego, para resolver el fs.readFile Promise y obtener su valor en la misma línea, necesitamos usar la palabra clave await Se lee como una operación sincrónica, pero como mencioné antes, no bloquea el ciclo de eventos.

Creando un servidor web Node.js con Fastify

Ahora es el momento de escribir su primer servidor web Node.js. Para este ejemplo, usará Fastify , un marco web rápido y de baja sobrecarga, para Node.js. Hay otras alternativas populares como Express.js que sigue un enfoque similar, pero personalmente recomiendo Fastify. Es rápido, está bien mantenido y sus patrones de manejo de ruta son muy similares a los que podrá escribir usando Salesforce Functions (pero ese es un tema para otra publicación de blog).

Primero, deberá instalar fastify como una dependencia para su proyecto Node.js. Y dado que utilizará esta API con un proyecto LWC existente, también deberá habilitar CORS para su servidor web. Puede hacerlo ejecutando:

 npm instalar fastify fastify-cors

Luego, server.js un archivo server.js con el siguiente contenido:

 // Requerir módulos `core` y asignarlos a constantes
// Requiere el módulo `fs / promises`, todos los métodos devolverán Promises.
const fs = require ('fs / promises');
const ruta = require ('ruta');
// Requerir el marco fastify e instanciarlo
const fastify = require ('fastify') ({logger: true});
// Definir el puerto HTTP
const PORT = process.env.PORT || 3000; // Defina el nombre del archivo uniendo el directorio actual y data / sessions.json
const sessionFilename = ruta.join (__ dirname, 'datos', 'sesiones.json'); // Registrar el complemento CORS
fastify.register (require ('fastify-cors')); // Declara la ruta / api / sessions
fastify.get ('/ api / sessions', async (solicitud, respuesta) => { // Leer el archivo usando async / await como una cadena `utf8` const sessionFile = aguardar fs.readFile (sessionFilename, 'utf8'); // Analizar la cadena `utf8` como un objeto JSON sesiones const = JSON.parse (archivo de sesiones); sesiones de retorno
}) // ¡Ejecuta el servidor!
función asíncrona start () { intentar { aguardar fastify.listen (PUERTO, '0.0.0.0'); } atrapar (err) { fastify.log.error (err); process.exit (1); }
}
comienzo();

server.js con un servidor web implementado en Fastify

Y ahora, server.js el servidor ejecutando server.js y hagamos una solicitud HTTP a https://localhost:3000/api/sessions .

Aplicación web Node.js que se ejecuta localmente con una solicitud HTTP

Para la solicitud HTTP, estoy usando HTTPie , un cliente HTTP fácil de usar para su terminal, pero puede realizar la solicitud desde su navegador web favorito.

Implemente su servidor web Node.js en Heroku

Por último, pero no menos importante, es implementar la aplicación web en Heroku. Asegúrese de revisar la guía Introducción a Heroku con Node.js para verificar todos los requisitos necesarios para implementar y obtener más información sobre Heroku.

Antes de intentar la implementación, asegúrese de que su proyecto esté configurado como un proyecto de Git y luego confirme todo el código que ha escrito hasta ahora.

 $ git init
$ git commit -am "Confirmación inicial"

Luego, cree una aplicación Heroku ejecutando:

 heroku crear

Y para implementar, deberá enviar su código a Heroku ejecutando:

 git push heroku principal

Si todo salió bien, obtendrás algo como esto:

Aplicación Node.js implementada en Heroku

Y eso es todo: ha vuelto a crear la API a partir del proyecto de inicio de ruta de código abierto Build Your First Application con Lightning Web Components utilizando Node.js y Fastify y la ha implementado en Heroku. Ahora puede cambiar la URL del proyecto LWC por la que acaba de implementar.

¿Que sigue?

Esta es la segunda publicación de la serie: "Introducción a Node.js para desarrolladores de Salesforce". En la siguiente publicación del blog, aprenderá cómo acceder a servicios de datos como Heroku Postgres y cómo integrar estas aplicaciones Node.js con las aplicaciones de Salesforce.

Recursos

Aquí hay una lista de recursos útiles que lo ayudarán a comprender los conceptos presentados en esta publicación:

Sobre el Autor

Julián Duque es un defensor de desarrolladores líder en Salesforce. Conéctese con él en Twitter @julian_duque.

Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://developer.salesforce.com/blogs/2021/07/building-your-first-web-application-using-node-js.html

Últimas novedades 
de EGA Futura
1954
Desde hace más de 25 años potenciamos a las Empresas de Iberoamérica
🎬 Video de EGA Futura » Conceptos de Seguridad (EGA Futura ERP / Salesforce)

🎬 Video de EGA Futura » Conceptos de Seguridad (EGA Futura ERP / Salesforce)

🎬 Video de Juan Manuel Garrido » Claves para tu Productividad diaria 🙌✅

🎬 Video de EGA Futura » Facturación Electrónica en Uruguay » Conceptos básicos con EGA Futura Windows

🎬 Video de EGA Futura » Facturación Electrónica en Uruguay » Configuración de EGA Futura Windows

🎬 Video de EGA Futura » Facturación Electrónica en Uruguay » Funcionamiento con EGA Futura Windows

🎬 Video de EGA Futura » Configuración de la Plataforma EGA Futura

🎬 Video de EGA Futura » Configuración de usuario en EGA Futura

🎬 Video de EGA Futura » Como automatizar la publicación en Redes Sociales?

🎬 Video de Juan Manuel Garrido » Cómo restaurar la configuración de fábrica de EGA Futura Windows sin perder la información

🎬 Video de Juan Manuel Garrido » Factura electrónica: Prueba de Factura Electronica previa a la activacion

🎬 Video de EGA Futura » Como se registran los Beneficios de cada Empleado en la base de datos de EGA Futura

🎬 Video de EGA Futura » EGA Futura Time Clock » Reloj de Control horario y asistencia

🎬 Video de EGA Futura » Como registrar Observaciones en un Empleado dentro de EGA Futura People?

🎬 Video de EGA Futura » Cómo registrar la Educación de cada Empleado en EGA Futura People?

🎬 Video de EGA Futura » Como hacer la Desvinculación de un Empleado? (Offboarding)

🎬 Video de EGA Futura » Como registrar Habilidades o Skills de empleados dentro de EGA Futura

🎬 Video de EGA Futura » Como hacer el Onboarding o Proceso de Incorporación de un Empleado?

🎬 Video de EGA Futura » Cómo administrar Turno de trabajo dentro de EGA Futura

🎬 Video de EGA Futura » Que es un Ticket interno dentro de la Plataforma EGA Futura

🎬 Video de EGA Futura » Que son los Entrenamientos de Empleado en EGA Futura people?

🎬 Video de EGA Futura » Qué son los Epics dentro de EGA Futura

🎬 Video de EGA Futura » Qué es EGA Futura People?

🎬 Video de EGA Futura » EGA Futura People » Asistencias

🎬 Video de EGA Futura » Soporte EGA Futura » Software de Gestión Windows vs Software de Gestión Nube 🤩

🎬 Video de EGA Futura » ツ Comparando un Objeto con un Fichero

Construyendo su primera aplicación web usando Node
Construyendo su primera aplicación web usando Node.js ☁️