¿Qué es Node.js?

Node.js es un entorno de ejecución del lenguaje de programación JavaScript. Este entorno de ejecución necesita un programa escrito en JavaScript para ser ejecutado. Node.js es JavaScript pero del lado del servidor. En resumen, en vez de ejecutar el programa JavaScript en tu ordenador, lo ejecuta en el servidor.

Instala en https://nodejs.org/es/

¿Cómo puedo aprender Node.js?

Antes de nada, quiero aclarar que Node.js es JavaScript, pero del lado del servidor y con algunas características, si sabes JavaScript, sabes Node.js. Si no sabes JavaScript puedes aprender en SoloLearn, una plataforma que me funciono un montón para aprender programación Front-End y Back-End.

Entonces... ¿Cómo puedo empezar el servidor web?

Bueno para empezar usaremos el framework web Express.js, como digo, es un framework web para crear servidores web para Node.js. Este framework web es muy ligero (214kB) y rápido. Se centra en un buen rendimiento, cache y con un routing robusto, entre otras.

Empezemos a instalar Express.

Para instalar Express usaremos npm, sirve para instalar todo tipo de cosas hechas por la comunidad. Además, viene instalado por defecto al instalar Node, por lo que no necesitas nada mas que instalar Node.

Primero crea un package.json si es un nuevo projecto con este comando:

$ npm init

Después instala Express con este comando.

$ npm install express

Entonces, empezemos a programar nuestro servidor web. Primero, usemos el siguiente codigo para definir Express.

const express = require('express')
const app = express()

Aquí hemos definido Express, ahora vamos a empezar nuestro primer servidor web. Desde ahora solo usaremos la constante app para referirnos a Express, no hay que confundirse con la constante express.

app.get('/', function (req, res) {
res.send('¡Hola mundo!')
})

app.listen(8000)

Aqui hemos iniciado nuestro servidor web en el puerto 8000, escuchando peticiones GET. Cuando envíes tu petición te devolvera en pantalla el texto de "¡Hola mundo!".

Hemos puesto un hola mundo, pero... Y si queremos tener mas páginas y renderizar archivos HTML. Para esto, usaremos lo siguiente.

const fs = require('fs')

En la primera línea del código, importamos el File System de Node, es decir el código de arriba. Ahora con esto, vamos a renderizar un archivo HTML de la siguiente forma...

app.get('/', async function (req, res) {
res.send(fs.readFileSync('templates/index.html', 'utf8'))
})

app.listen(8000)

En el codigo de arriba estamos haciendo una función asíncrona en la que se renderiza el archivo index.html, en la carpeta templates/.

Ahora, si queremos añadir varias páginas, lo que tendríamos que hacer es definir varios routes, de la siguiente manera...

app.get('/', async function (req, res) {
res.send(fs.readFileSync('templates/index.html', 'utf8'))
})
app.get('/sobremi', async function (req, res) {
res.send(fs.readFileSync('templates/sobremi.html', 'utf8'))
})

app.listen(8000)

De esta manera, cuando accedas a localhost:8000/sobremi, te renderizara el archivo HTML especificado.