Breaking

Post Top Ad

Your Ad Spot

lunes, 28 de septiembre de 2020

Tutorial de lista de tareas pendientes de Node.js

 

En esta aventura de Node.js, abordaremos la aplicación obligatoria de lista de tareas pendientes. A lo largo del camino, aprenderemos sobre los conceptos bĆ”sicos de los módulos y cómo usarlos en un entorno Node. DespuĆ©s de eso, exploraremos cómo usar require () para hacer uso tanto de nuestros propios archivos como de los módulos de terceros creados por la comunidad. Necesitaremos ver cómo aceptar la entrada del usuario, asĆ­ como hacer uso de JSON para almacenar los datos que componen nuestros elementos de tareas pendientes. Comencemos a poner en funcionamiento nuestra aplicación de lista de tareas pendientes de Node.js ahora.


Ejecute un archivo JavaScript como una aplicación NodeJS

Ya aprendimos cómo escribir algunos comandos en la consola de Node y hacer que sucedan algunas cosas. Ahora, queremos crear archivos JavaScript que se puedan ejecutar como una aplicación Node.js. ¿Cómo podemos hacer esto? Comenzaremos con el ejemplo obligatorio de Hello World. Primero, crearemos un directorio en nuestra mĆ”quina para contener algunos archivos JavaScript.

C: \> nodo mkdir

Ahora, abriremos esa carpeta usando Visual Studio Code, un editor de código fantĆ”stico y poderoso que tambiĆ©n es gratuito. Una vez abierto, continĆŗe y cree un nuevo archivo de app.js como ese.
nuevo archivo de código de estudio visual

En el archivo app.js, agregaremos algĆŗn código y guardaremos el archivo si es necesario. (El código de Visual Studio se guardarĆ” automĆ”ticamente en la mayorĆ­a de los casos)
hola mundo nodo js

Ahora tiene una aplicación bĆ”sica de Node.js que estĆ” lista para ejecutarse. SĆ© que apenas puedes contener tu emoción. ¡Ahora podemos ejecutar ese programa!
hola mundo en nodo

¡Salvaje! SĆ© que parece trivial, pero acabas de seguir los pasos bĆ”sicos para crear una aplicación Node.js muy bĆ”sica. Creamos un directorio para almacenar nuestros archivos de programa, agregamos algo de código y finalmente ejecutamos el programa. ¡Eso es practicamente todo! Incluso las aplicaciones mĆ”s grandes y complejas comenzarĆ”n con estos primeros pasos simples.


Conceptos bÔsicos del módulo en Node.js

Con nuestro ejemplo de hola mundo abordado, aprendamos un poco sobre los módulos en Node.js. Los módulos son unidades de funcionalidad. En Node hay todo tipo de módulos que puedes utilizar. Algunos lo ayudan a trabajar con el sistema de archivos, otros pueden proporcionar servicios http o servicios DNS.


require () para módulos integrados

Veamos cómo podemos hacer uso de un módulo en Node.js. Considere este código.

En este código, primero hacemos uso de la función require () del nodoSe utiliza para requerir módulos en Node. La cadena 'fs' que pasamos a require () se carga en el módulo de sistema de archivos integrado de Node . Esto se almacena en el objeto fs, que ahora tiene una gran cantidad de mĆ©todos que puede utilizar. Para este ejemplo rĆ”pido, simplemente usaremos el mĆ©todo fs.appendFile () que agrega datos de forma asincrónica a un archivo, creando el archivo si aĆŗn no existe. El primer argumento es el nombre del archivo para escribir. Proporcionamos 'file.txt' como archivo. El siguiente argumento son los datos que se escribirĆ”n en ese archivo. Por Ćŗltimo, debemos incluir una devolución de llamada para manejar cualquier error que pueda ocurrir. Antes de ejecutar el programa, asĆ­ es como se ve el código de Visual Studio.
requirefs de nodo

Ahora podemos ejecutar la aplicación desde la lĆ­nea de comandos escribiendo node app.js.

C: \ nodo> nodo app.js
Los datos se han escrito en file.txt
nulo

Una vez finalizado el programa, observe que ahora tenemos un nuevo archivo en nuestro editor de file.txt. Esto se debe a que Node.js acaba de crear el nuevo archivo y le escribió datos. ¡Muy genial!
archivo escrito por nodejs

Continúe y ejecute el programa una vez mÔs, y verÔ que se agrega un segundo conjunto de datos al archivo.
escribiendo en el sistema de archivos

Si lo desea, puede ejecutar este programa 500 veces y almacenar el texto de "Escribiendo en el sistema de archivos". 500 veces en ese archivo de texto file.txt. Por supuesto, eso realmente no tiene sentido, pero ahora tenemos un ejemplo real de trabajo de requerir el fsmódulo en una aplicación Node y escribir datos en el sistema de archivos. ¡Excelente!


require () para tus propios módulos o archivos

Con Node y ES6, es muy fĆ”cil colocar código en archivos separados y luego importarlos segĆŗn sea necesario. Esto limpia drĆ”sticamente su base de código y ayuda a mantener todo organizado de una manera muy ordenada para sus proyectos. A veces creo que la organización de código simple es literalmente la mitad de la batalla en la ingenierĆ­a de software. Entonces, en el espĆ­ritu de la aplicación de lista de tareas, creemos un nuevo archivo todos.js en nuestro editor y coloquemos el siguiente código en Ć©l.


todos.js

AquĆ­ estamos exportando la función de flecha addTodo () Simplemente agregamos una declaración de consola al archivo para mostrar cuĆ”ndo se ejecuta este archivo durante la ejecución de la aplicación. Ahora mira esto. En el archivo app.js principal, ahora podemos requerir lo que se ha exportado desde todos.js.

Ejecutar la aplicación nos muestra que todo estÔ funcionando muy bien.
requieren sus propios archivos js

La mayorĆ­a de las veces, el objetivo de las exportaciones es poder exportar funciones que se utilizan en el archivo app.js principal.


Requerir módulos de terceros en su aplicación de nodo

Ahora queremos aprovechar lo mejor de Node.js. ¡Todo el maravilloso software que ya ha sido escrito para ti! Para hacer uso de módulos de terceros, primero debemos crear un archivo package.json . Podemos hacer esto fĆ”cilmente ejecutando el npm initcomando en la raĆ­z del proyecto.

c: \ nodo> npm init
Esta utilidad lo guiarÔ a través de la creación de un archivo package.json.
Solo cubre los elementos mƔs comunes e intenta adivinar valores predeterminados razonables.

Consulte la npm help jsondocumentación definitiva sobre estos campos.
y exactamente lo que hacen.

Úselo luego para instalar un paquete ynpm install  --save
guƔrdelo como una dependencia en el archivo package.json.

Presione ^ C en cualquier momento para salir.
nombre: (nodo)

Como puede ver, comienza como un programa de shell en el que se nos presentan varias preguntas sobre la aplicación que estĆ” creando. AsĆ­ es como completamos este pequeƱo cuestionario.

nombre: (nodo) todos-nodo
versión: (1.0.0)
descripción:
punto de entrada: (app.js)
comando de prueba:
repositorio git:
palabras clave:
autor: vegibit
licencia: (ISC)
A punto de escribir en c: \ node \ package.json:

{
  "nombre": "todos-nodo",
  "versión": "1.0.0",
  "descripción": "",
  "main": "app.js",
  "dependencias": {},
  "devDependencies": {},
  "guiones": {
    "prueba": "echo \" Error: no se especificó ninguna prueba \ "&& salida 1"
  },
  "autor": "vegibit",
  "licencia": "ISC"
}


¿Esta bien? (sĆ­ SĆ­

c: \ nodo>

Ahora tenemos un archivo package.json en nuestro proyecto. Con este archivo en su lugar, podemos comenzar a agregar módulos de terceros a nuestra aplicación. Comenzaremos agregando la popular biblioteca de utilidades de JavaScript Lodash escribiendo lo siguiente en el sĆ­mbolo del sistema.

c: \ nodo> npm install lodash --save

Este comando harĆ” un par de cosas por ti. En primer lugar, ahora actualizarĆ” su archivo package.json automĆ”ticamente con la dependencia que acaba de agregar. En segundo lugar, el software NPM se comunicarĆ” con los servidores, tomarĆ” el software que desea usar y lo colocarĆ” en su mĆ”quina en un nuevo directorio llamado node_modules . ¡Echale un vistazo!
npm instalar lodash


Lodash ahora se puede utilizar en su proyecto

Podemos actualizar nuestro archivo app.js principal para incorporar Lodash ahora.


app.js

¡Bingo! Eso es todo lo que se necesita para descargar e instalar un módulo de terceros en su proyecto Node.js. Tienes mĆ”s de seiscientos mil (!) Para elegir, asĆ­ que diviĆ©rtete.


Reiniciar su aplicación Node.js con nodemon

A medida que construye su aplicación, necesitarĆ” retroceder continuamente y ejecutar manualmente la aplicación desde el terminal. ¡Eso no es realmente divertido, y podemos y debemos automatizar todas las cosas! Para que nuestra aplicación se reinicie automĆ”ticamente despuĆ©s de realizar cambios en nuestros archivos JavaScript, podemos instalar el popular módulo nodemon para que lo haga por nosotros. Sigamos adelante y agreguemos nodemon a nuestra mĆ”quina.

c: \ nodo> npm instalar nodemon -g

Una vez que nodemon estĆ” instalado, ahora puede ejecutar sus aplicaciones escribiendo nodemon <nombre de archivo> en lugar de nodo <nombre de archivo>. Echar un vistazo.
ejecutando nodemon

Lo que estĆ” sucediendo ahora es que nodemon ha puesto la aplicación en un estado de ejecución, pero siempre estĆ” monitoreando cualquier cambio. Si se detectan esos cambios, la aplicación se reiniciarĆ” automĆ”ticamente y podrĆ” verla en tiempo real en la terminal. Hagamos un cambio en uno de nuestros archivos de aplicación. Simplemente agregaremos una declaración de registro simple a app.js asĆ­.

Si te diriges a la terminal, ¡mira lo que vemos!

[nodemon] reiniciando debido a cambios ...
[nodemon] comenzando node app.js
[nodemon] reiniciando debido a cambios ...
Ejecutando app.js
Ejecutando todos.js
Nuevo Todo creado.
¡Amamos a Nodemon!
[nodemon] comenzando node app.js
Ejecutando app.js
Ejecutando todos.js
Nuevo Todo creado.
¡Amamos a Nodemon!
[nodemon] salida limpia - esperando cambios antes de reiniciar

Nodemon detectó cualquier cambio de inmediato y reinició la aplicación. Le encantarĆ” esta conveniencia a medida que desarrolla aplicaciones en Node.js.


Obteniendo entrada de usuario

Ahora finalmente podemos obtener alguna entrada del usuario. AsĆ­ es como podremos agregar un elemento de tareas pendientes a la aplicación. Solo queremos configurar algo sĆŗper bĆ”sico. Queremos que el usuario pueda escribir una tarea o un recordatorio en el sistema. Usaremos un módulo de Node.js llamado Yargs para ayudarnos con esto. Primero instalemos Yargs.

c: \ nodo> npm install yargs --save

Una vez que se instala, podemos requerirlo en nuestra aplicación como vemos aquí.

Ahora haremos un par de adiciones aquĆ­.

En el código anterior, recopilamos los argumentos de la lĆ­nea de comandos proporcionados a travĆ©s de yargs.argv y los almacenamos en args. Luego, vamos a cerrar la sesión de un argumento de 'todo' accediendo a Ć©l con args.to. Veamos eso en acción.
entrada de lĆ­nea de comando yargs

Como podemos ver si ejecutamos app.js y pasamos algunos argumentos como lo hicimos aquĆ­, podemos acceder a ellos dentro del programa. Al escribir node app.js --todo="eat lunch", estamos ejecutando app.js y pasando un argumento de todoy su valor es eat lunch.

Vamos a querer addTodo, listTodos, readTodo o deleteTodo. Necesitaremos capturar mĆ”s información de la lĆ­nea de comando para hacer eso. Podemos capturar la entrada de esa manera asĆ­:

c: \ nodo> nodo app.js addTodo
Ejecutando app.js
Ejecutando todos.js
Ejecutó el comando: addTodo

c: \ nodo> nodo app.js listTodos
Ejecutando app.js
Ejecutando todos.js
Ejecutó el comando: listTodos

c: \ nodo> nodo app.js readTodo
Ejecutando app.js
Ejecutando todos.js
Ejecutó el comando: readTodo

c: \ nodo> nodo app.js deleteTodo
Ejecutando app.js
Ejecutando todos.js
Ejecutó el comando: deleteTodo

Simplemente incluyendo el nombre del comando despuƩs de inicializar app.js, podemos ver que hemos capturado esa entrada y la estamos enviando a la consola.


Usar JSON para administrar datos

Necesitamos tener una forma de almacenar esos elementos de tareas pendientes en nuestra aplicación para que no se vayan flotando al abismo. Podemos hacer esto con JSON. Podemos comenzar configurando una forma de agregar un elemento de tarea.


Agregar un Todo

En primer lugar, actualice el archivo app.js asĆ­.

Ahora necesitamos agregar algo de lógica al archivo todos.js para agregar realmente un elemento a un objeto de datos JSON.

Ok, creo que podemos ejecutar el programa. AquĆ­ va:

c: \ node> node app.js addTodo --title = "Cortar el cƩsped"
Ejecutando app.js
Iniciando todos.js
Comando en ejecución: addTodo

Si busca en Visual Studio Code, verĆ” un nuevo archivo allĆ­. Inspeccionar ese archivo nos muestra que la tarea que acabamos de agregar al sistema ahora estĆ” almacenada en ese archivo todos-data.json. ¡Frio!
datos almacenados en el archivo json

Agregaremos algunos elementos mƔs.

c: \ node> node app.js addTodo --title = "Ir a trabajar"
Ejecutando app.js
Iniciando todos.js
Comando en ejecución: addTodo

c: \ node> node app.js addTodo --title = "Leer el documento"
Ejecutando app.js
Iniciando todos.js
Comando en ejecución: addTodo

c: \ node> node app.js addTodo --title = "Netflix y relajarse"
Ejecutando app.js
Iniciando todos.js
Comando en ejecución: addTodo

Efectivamente, nuestro archivo de datos json se estĆ” actualizando.

Las funciones que estƔn haciendo el trabajo pesado por nosotros son las siguientes.


readFileSync

Lee sincrónicamente todo el contenido de un archivo.

  • @param path
    Una ruta a un archivo. Si se proporciona una URL, debe utilizar el archivo: protocolo. La compatibilidad con URL es experimental. Si se proporciona un descriptor de archivo, el archivo subyacente no se cerrarĆ” automĆ”ticamente.
  • Opciones de @param: un objeto que puede contener una bandera opcional. Si no se proporciona una bandera, el valor predeterminado es 'r'.

JSON.parse

Convierte una cadena de notación de objetos JavaScript (JSON) en un objeto.

  • @param text: una cadena JSON vĆ”lida.
  • @param reviver
    Una función que transforma los resultados. Esta función se llama para cada miembro del objeto. Si un miembro contiene objetos anidados, los objetos anidados se transforman antes que el objeto principal.

writeFileSync

Escribe datos de forma sincrónica en un archivo, reemplazando el archivo si ya existe.

  • @param path
    Una ruta a un archivo. Si se proporciona una URL, debe utilizar el archivo: protocolo. La compatibilidad con URL es experimental. Si se proporciona un descriptor de archivo, el archivo subyacente no se cerrarĆ” automĆ”ticamente.
  • @param data: los datos que se van a escribir. Si se proporciona algo que no sea Buffer o Uint8Array, el valor se convierte en una cadena.
  • Opciones de @param
    O la codificación del archivo o un objeto que especifica opcionalmente la codificación, el modo de archivo y la marca. Si no se proporciona la codificación, se utiliza el valor predeterminado de 'utf8'. Si no se proporciona el modo, se utiliza el valor predeterminado 0o666. Si el modo es una cadena, se analiza como un entero octal. Si no se proporciona el indicador, se utiliza el valor predeterminado 'w'.

JSON.stringify

Convierte un valor de JavaScript en una cadena de notación de objetos de JavaScript (JSON).

  • @param value: un valor de JavaScript, generalmente un objeto o matriz, que se va a convertir.
  • @param replacer - Una función que transforma los resultados.
  • @param space: agrega sangrĆ­a, espacios en blanco y caracteres de salto de lĆ­nea al texto JSON de valor de retorno para facilitar la lectura.

Eliminar un elemento de Todo

Ahora agreguemos la lógica para eliminar un elemento de tarea del almacĆ©n de datos JSON. Nuestros archivos todos.js y app.js actualizados se encuentran a continuación.
todos.js

app.js

Ahora podemos ejecutar el programa pasando un tĆ­tulo que sabemos que existe y uno que no para confirmar que todo funciona correctamente.

c: \ node> node app.js deleteTodo --title = "Netflix y relƔjate"
Ejecutando app.js
Iniciando todos.js
Comando en ejecución: deleteTodo
Todo fue eliminado

c: \ node> node app.js deleteTodo --title = "Ver Pulp Fiction"
Ejecutando app.js
Iniciando todos.js
Comando en ejecución: deleteTodo
Todo no encontrado

Leer un artĆ­culo de Todo

Esta iteración agregarÔ la capacidad de simplemente leer un elemento de tarea pendiente cuando pasamos el título de ese elemento de tarea.
app.js

todos.js

¡ProbĆ©moslo! ¡Parece que estĆ” funcionando!

c: \ node> node app.js readTodo --title = "Cortar el cƩsped"
Ejecutando app.js
Iniciando todos.js
Comando en ejecución: readTodo
¡Excelente! Se encontró el todo.
------
Su tƭtulo es: Corta el cƩsped

c: \ node> node app.js readTodo --title = "Netflix y relajarse"
Ejecutando app.js
Iniciando todos.js
Comando en ejecución: readTodo
¡Ups! No se encontró la tarea.

Listado de todos los elementos de Todo

Por Ćŗltimo, queremos tener la capacidad de enumerar todos los elementos de la aplicación. Eche un vistazo a la versión final de todos.js y app.js que agregan soporte para esto.
todos.js