title | slug | description | keywords | draft | tags | math | toc | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Node.js |
node |
💚 |
|
false |
false |
false |
-
Postman: Para inspeccionar las peticiones al servidor.
-
VScode: No es obligatorio. Tambien se recomiendan las siguientes extensiones:
- HTML CSS Support.
- JavaScript(ES6) code snippets.
- JS_CSS_HTML Formatter.
- Terminal.
- TypeScript Importer.
- Git: Es un manejador de versiones.
Nodemon: Este paquete nos sera de mucha ayuda para no tener que bajar y subir el servidor manualmente cada vez que hagamos un cambio. Este hara el reinicio automaticamente cuando note un cambio en alguno de los archivos.
NOTA: Por default nodemon solo reseteara el servidor cuando hagamos una cambio en los archivos javascript. Si queremos que ejecute estos cambios en otro tipo de ficheros lo haremos de lasiguiente manera: nodemon app -e js,css,html,hbs
Yargs: Nos sirve para manejar los argumentos de entrada en una app de linea de comandos.
Colors: Nos ayuda a colorear la salida de nuestra CLI.
Request: Nos sirve para hacer peticiones HTTP utilizando callbacks. NOTA: El metodo encodeUrl() nos puede servir de mucha ayuda. Sirve para escapar strign a uri amigables.
Axios: Nos sirve para hacer peticiones HTTP utilizando promesas. NOTA: El metodo encodeUrl() nos puede servir de mucha ayuda. Sirve para escapar strign a uri amigables.
Express: Nos permite montar un servidor HTTP. Esta basado en la libreria HTTP que viene por defecto en node.
hbs: Es un motor de platatillas(template engine) para express. Una configuracion sencilla para este motor de plantillas junto con express es:
const express = require('express')
const app = express()
app.set('view engine', 'hbs')
app.get('/', (req, res) => {
res.render('filename', {
// Context
})
})
NOTA: Debe haber un fichero con extension .hbs
en un carpeta views en la raiz de la app. Este fichero contiene el template.
Body-parser: No ayuda a leer mensajes serializados desde la URL(como por ejemplo los que son mandados por POST o PUT)
Mongoose: Nos permite conectarnos a una base de datos NoSQL(MongoDB)
Mongoose-unique-validator Nos permite mostrar de una manera mas amigable los errores.
Nos sirve para ecriptar mensajes.
Nos sirve para la genereacio y firma de JWT.
Bueno, como su nombre indidca este paquete nos ayudara a la subida de archivos a nuestro servidor.
Tenemos 3 tipos de required:
- De un proyecto propio de node: Son librerias que ya existen en node. No requieren de ningun paso adicional. Podemos encontrar dichas librerias en la documentacion de node. Ejemplo:
const fs = require('fs')
-
Libreria externas. Paquetes que no son nativos de node.
-
Archivos de nuestro proyecto. Ejemplos
const module1 = require('./module1')
const module2 = require('../modules/module2')
NOTA: los modulos se exportan a traves del metodo exports del objeto module. Este objeto esta disponible a en todo el proyecto. Dicho metodo recibe un JSON con las funciones,objetos,variable, etc a exportar.
Durando el ciclo de vida de un programa en node hay varios objetos que corren en este. Algunos son:
-
module: Este contine valores como cuales son los modulos disponibles o exportados durante nuestra app.
-
process: Contiene muchos datos interesantes. Sobre que SO esta corriendo la app, arquitectura del procesaro,argumentos(argv), etc.
Podemos compartir y tener un control de versiones de las dependencias con npm como lo hariamos con composer en PHP.
NOTA: Esto es muy importante hacerlo antes de instalar dependencias
Sintasis: npm init
Al instalar o iniciar un proyecto. en el fichero package.json tenemos un atributo o propiedad script. En este estan todos los comando que podremos ejecutar desde nuestra app en produccion.
Para correr un comando la sintaxis seria: npm run name_comand
NOTA: Si montamos una app en Heroku por defecto esta ejecutara el servidor desde el script start.
Los tokents son utilizados para verificar o identificar a un usuario en especial. Se pueden asociar tambien con las variables de session.
Pero estos son mucho mas manejables y permite manejar una mayor cantidad de usuarios(mas de 5 mil) sin invertir en un gran equipo.
Los JSON Web Tokents estan compuestos por 3 partes principales separados por un punto( '.' ):
-
Header: Contiene informacion sobre el algoritmo utilizado para la incriptacion junto con el tipo de tokent(en este caso JWT)
-
Payload: Contiene la informacion que enviamos en el Token(Aunque pensemos que esta encriptado(de forma segura) es muy facil desencriptar la informacion)
-
Firma: Es lo que le permite a los verificadores del JWT que este es valido.
https://jwt.io es una herramientamienta muy util.