En mi primer post en Dev.to! Voy a explicar como empezar una api de cero con node.js mas Express.js para usar la sintaxis moderna de JavaScript.
Para lograr esto vamos a usar Babel, para escribir código moderno y lo convierte a un código que lo entienda la mayoría de los navegadores.
Empecemos...
Iniciando una Api
npm init –-y
Instalamos Express.js
npm i express
Instalamos Babel como "devDependencies"
npm i @babel/core @babel/cli @babel/node @babel/preset-env @babel/plugin-transform-runtime -D
Que es cada cosa...
Core: Modulo principal de babel.
Cli: Para utilizar babel desde consola.
Node: Para usar babel adentro de node.
Preset-env: Para configurar Babel.
Plugin-transform-runtime: Para no tener problema con códigos async/await.
- Crear un archivo llamado “.babelrc” en la raíz de la api, para escribir las configuraciones.
{
"presets": [
"@babel/env"
],
"plugins": [
"@babel/transform-runtime"
]
}
- Creamos el típico index.js en /src
import express from "express";
const app = express();
app.set("port", 3000);
app.listen(app.get("port"));
console.log("Servidor Encendido, en el puerto:", app.get("port"));
Usando la sintaxis moderna de “import”
- Para ejecutar la api con babel, hay q modificar el siguiente comando en Scripts del package.json.
"scripts": {
"start": "babel-node src/index.js"
},
- Ejecutamos
npm run start
Bonus Track:
- Ya de paso para dejar una buena base, para trabajar con la api y que se actualice automáticamente cada vez que guardamos el código, vamos a agregarle “Nodemon”
npm install --save-dev nodemon
- Como ultimo paso tenemos que modificar los comandos de ejecucion en scripts de package.json
"scripts": {
"babel-node": "babel-node",
"dev": "nodemon --exec npm run babel-node -- src/index.js",
"build": "babel src --out-dir dist",
"start": "node dist/index.js"
},
Dev: Para ejecutar con babel-node el src/index.js con nodemon.
Build: Para hacer un build en la carpeta dist de la api para prod.
Start: Ejecuta la api en prod ya con su build en la carpeta dist.
Con este último punto, finalizamos la guía.
Top comments (1)
genial, como seria el apartado de routing?