NodeJs
Es un programa escrito en C++ con el interprete de Google Chrome V8 extendido. Es decir, que utiliza un interprete de Javascript y lo extiende para agregarle bastantes características propias de un servidor.
Nodejs es un servidor servidor, permite crear servicios, servicios que son consumidos por uno o varios clientes (navegadores web por ejemplo). Esto es lo que llamamos Modelo Cliente-Servidor
Requisitos Previos
-
Install Windows Subsystem for Linux
-
Set up Visual Studio Code
-
Node Js
Instalar una versión específica de Node.js usando NVM
Otra forma de instalar Node.js en Ubuntu es hacer uso del Administrador de versiones de nodos (NVM), un script bash que se utiliza para administrar múltiples versiones de Node.js.
Instalar Node.js utilizando el método NVM es ideal si desea utilizar una versión específica. Para comenzar, descargue e instale NVM usando wget:
- Abra la consola de Ubuntu y utilice el siguiente comando:
- Para instalar una versión diferente, reemplace v0.39.0 por otro valor o use el siguiente comando para descargar la versión más reciente:
- Permita que el script NVM se ejecute desde el perfil bash de su usuario:
Una vez instalado NVM,
Instalar NVM en su Sistema
- Compruebe todas las versiones disponibles de Node.js mediante NVM ejecutando el siguiente comando:
- Si bien puede instalar cualquier versión Node.js, le recomendamos que utilice la versión más reciente para garantizar su compatibilidad y confiabilidad. Para este ejemplo, instalaremos la última versión de LTS en el momento de escribir este artículo:
- Compruebe si se ha instalado correctamente consultando el número de versión actualmente activo:
Consideraciones antes de de Crear un Proyecto
Dentro del terminal de ubuntu, crear una carpeta donde pretende alojar el proyecto.
mkdir sitealmacen
y luego
Una vez dentro de la carpeta ingresar code .
para entrar a visual studio code y desde allí trabajar mejor el proyecto.
Una vez dentro de Visual Studio Code, ingresar a una nueva terminal (Menu de Opciones
> Terminal
> Nueva Terminal
)
Ahora si iniciemos los pasos:
Paso 0:
Con esto se crea el archivo package.json, donde se alojan las diferentes extensiones y librerías del proyecto.
Ahora crear el archivo tsconfig.json
Nota: Antes de continuar, hacemos conexión con VS CODE en el entorno para ver los archivos generados
En el archivo tsconfig.json
, cambiar
Paso 1:
Crear paquete express para Node y Para TypeScript
Crear el archivo src/server.ts
y src/config/index.ts
Crear el archivo src/server.ts
import { App } from './config/index';
async function main() {
const app = new App(4000);
await app.listen();
}
main();
Luego, crear el archivo src/config/index.ts
import express, { Application } from 'express';
export class App {
app: Application;
constructor(
private port?: number | string
) {
this.app = express();
this.settings();
}
private settings() {
this.app.set('port', this.port || process.env.PORT || 4000);
}
async listen() {
await this.app.listen(this.app.get('port'));
// await this.app.listen(this.port);
// console.log('Server on port', this.port);
console.log('Server on port', this.app.get('port'));
}
}
Una vez realizado estos dos archivos, ejecutamos con
El inconveniente hasta este punto, radica que cada cambio que hagamos debemos ejecutar reiterativamente los comandos
npx tsc
node dist/server.js
Para evitar esto y que al guardar automáticamente compile y genera los javascript correspondientes utilizamos la librería Nodemon, así.
Y se configura en package.json
Y se ejecuta con npm run dev
[nodemon] 2.0.20
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: ts,json
[nodemon] starting `ts-node src/server.ts`
Server on port 4000
Y si nos dirigimos al navegador y en la URL, colocamos
localhost:4000, nos muestra lo siguiente:
Ya está escuchando el puerto 4000, para las diferentes peticiones.
Luego, se instala el paquete Morgan para ver las peticiones en pantalla
Seguidamente, se configura en el archivo src/config/index.ts
donde se importa la librería morgan
,
y luego se llama el método this.middlewares()
y se crea el método respectivo
this.middlewares();
....
....
private middlewares() {
this.app.use(morgan('dev'));
this.app.use(express.json()); // leer json raw
this.app.use(express.urlencoded({ extended: false })); //leer json form
}
Código completo
import express, { Application } from 'express';
import morgan from 'morgan';
export class App {
app: Application;
constructor(
private port?: number | string
) {
this.app = express();
this.settings();
this.middlewares();
}
private settings() {
this.app.set('port', this.port || process.env.PORT || 3000);
}
private middlewares() {
this.app.use(morgan('dev'));
this.app.use(express.json()); // leer json raw
this.app.use(express.urlencoded({ extended: false })); //leer json form
}
async listen() {
await this.app.listen(this.app.get('port'));
// await this.app.listen(this.port);
// console.log('Server on port', this.port);
console.log('Server on port', this.app.get('port'));
}
}
Nuevamente levantamos nuestro servidor en la terminal
y al dirigirnos al navegador y en la URL, colocamos localhost:4000, nos muestra lo siguiente, nuevamente:
Pero con la diferencia que en la terminal de VStudio Code, donde levantamos el servidor
Refleja que se ha hecho una petición get, así