Saltar a contenido

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:

  1. Abra la consola de Ubuntu y utilice el siguiente comando:
sudo apt-get install wget
  1. 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:
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.39.0/install.sh | bash
  1. Permita que el script NVM se ejecute desde el perfil bash de su usuario:
source ~/.profile

Una vez instalado NVM,

Instalar NVM en su Sistema

  1. Compruebe todas las versiones disponibles de Node.js mediante NVM ejecutando el siguiente comando:
nvm ls-remote
  1. 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:
nvm install 22.15.0
  1. Compruebe si se ha instalado correctamente consultando el número de versión actualmente activo:
node -v

Consideraciones antes de de Crear un Proyecto

Dentro del terminal de ubuntu, crear una carpeta donde pretende alojar el proyecto.

Paso 1:

mkdir sitealmacen y luego

sudo chmod -R 777 sitealmacen/
cd sitealmacen

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:

npm init -y
# Dependencias de desarrollo
npm install -D typescript @types/node nodemon ts-node
npm install -D @types/express @types/morgan @types/cors

# Crear archivo de configuración TypeScript
npx tsc --init

Nota: Antes de continuar, hacemos conexión con VS CODE en el entorno para ver los archivos generados

En el archivo tsconfig.json, cambiar

{
  "compilerOptions": {
    "target": "es2016",
    "module": "commonjs",
    "rootDir": "./src",
    "outDir": "./dist",
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    "strict": true,
    "verbatimModuleSyntax": false,
    "skipLibCheck": true
  }
}

En el archivo package.json, cambiar

{
  "scripts": {
    "build": "tsc",
    "dev": "nodemon src/server.ts --exec ts-node"
  },
  "type": "commonjs"
}

Paso 2:

2.1 Instalación de Dependencias Core

npm install express cors morgan dotenv

2.2 Crear estructura de directorios

Desglose detallado:

src/

  • config/ - Configuración principal de la aplicación

  • controllers/ - Controladores para manejar la lógica de negocio

  • database/ - Configuración y conexión a base de datos

  • faker/ - Scripts para generar datos de prueba

  • http/ - Archivos .http para testing de endpoints

  • middleware/ - Middleware personalizado (autenticación, etc.)

  • models/ - Modelos de Sequelize

    • authorization/ - Modelos específicos del sistema de autorización
  • routes/ - Definición de rutas de la API

Paso 3: Configuración del Servidor

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();
    await app.listen();
}

main();

Luego, crear el archivo src/config/index.ts

import dotenv from "dotenv";
import express, { Application } from "express";
import morgan from "morgan";
var cors = require("cors");

dotenv.config();

export class App {
  public app: Application;

  constructor(private port?: number | string) {
    this.app = express();
    this.settings();
    this.middlewares();
    this.routes();
    this.dbConnection();
  }

  private settings(): void {
    this.app.set('port', this.port || process.env.PORT || 4000);
  }

  private middlewares(): void {
    this.app.use(morgan('dev'));
    this.app.use(cors());
    this.app.use(express.json());
    this.app.use(express.urlencoded({ extended: false }));
  }

  private routes(): void {
    // Las rutas se configurarán más adelante
  }

  private async dbConnection(): Promise<void> {
    // Conexion, configuracion y sincronizar BD
  }

  async listen() {
    await this.app.listen(this.app.get('port'));
    console.log(`🚀 Servidor ejecutándose en puerto ${this.app.get('port')}`);
  }
}

Una vez realizado estos dos archivos, ejecutamos con

npm run dev

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.