Introducció
Node.js és un entorn d'execució de JavaScript construït sobre el motor V8 de Google Chrome. Permet executar codi JavaScript fora d'un navegador web, el que obre un món de possibilitats per als desenvolupadors, incloent la creació de servidors web, aplicacions de xarxa, eines de línia de comandes, i molt més.
Característiques Clau de Node.js
-
Asíncron i Basat en Esdeveniments:
- Node.js utilitza un model d'E/S no bloquejant, el que significa que pot gestionar múltiples operacions d'entrada/sortida de manera eficient sense esperar que cada operació es completi abans de començar la següent.
- L'event loop és el mecanisme que permet a Node.js gestionar operacions asíncrones.
-
Motor V8 de Google Chrome:
- Node.js està construït sobre el motor V8 de Google Chrome, que és molt ràpid i optimitzat per a l'execució de codi JavaScript.
-
Sistema de Mòduls:
- Node.js té un sistema de mòduls integrat que permet als desenvolupadors organitzar el seu codi en mòduls reutilitzables.
- Utilitza
require()
per importar mòduls imodule.exports
per exportar-los.
-
Gran Ecosistema de Paquets:
- Node.js té un ecosistema de paquets molt gran i actiu, gestionat a través de NPM (Node Package Manager).
- Hi ha milers de paquets disponibles per a gairebé qualsevol funcionalitat que puguis necessitar.
Avantatges de Node.js
-
Alt Rendiment:
- Gràcies al motor V8 i al model d'E/S no bloquejant, Node.js pot gestionar un gran nombre de connexions simultànies amb un rendiment excel·lent.
-
Escalabilitat:
- Node.js és ideal per a aplicacions que necessiten escalar horitzontalment, com ara servidors web i aplicacions de xarxa.
-
Un Sol Llenguatge:
- Amb Node.js, pots utilitzar JavaScript tant al client com al servidor, el que simplifica el desenvolupament i la gestió del codi.
-
Gran Comunitat:
- Node.js té una comunitat molt activa que contribueix amb paquets, eines i recursos, el que facilita trobar solucions i suport.
Desavantatges de Node.js
-
Model Asíncron:
- El model asíncron pot ser difícil de comprendre i gestionar, especialment per a desenvolupadors que no estan familiaritzats amb la programació asíncrona.
-
No Adequat per a Tasques Pesades de CPU:
- Node.js no és ideal per a aplicacions que requereixen molta CPU, ja que el seu model d'un sol fil pot ser un coll d'ampolla en aquests casos.
Exemples d'Ús de Node.js
-
Servidors Web:
- Node.js és àmpliament utilitzat per crear servidors web que poden gestionar un gran nombre de connexions simultànies.
-
Aplicacions de Xarxa:
- És ideal per a aplicacions de xarxa en temps real, com ara xats, jocs multijugador, i aplicacions de col·laboració.
-
Eines de Línia de Comandes:
- Moltes eines de desenvolupament, com ara gestors de paquets i compiladors, estan construïdes amb Node.js.
Exemples Pràctics
Exemple 1: Crear un Servidor HTTP Simple
const http = require('http'); const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hola, món!\n'); }); const port = 3000; server.listen(port, () => { console.log(`Servidor en funcionament a http://localhost:${port}/`); });
Explicació:
require('http')
: Importa el mòdul HTTP integrat de Node.js.http.createServer()
: Crea un nou servidor HTTP.server.listen(port)
: El servidor escolta les connexions entrants al port especificat.
Exemple 2: Llegir un Fitxer
const fs = require('fs'); fs.readFile('example.txt', 'utf8', (err, data) => { if (err) { console.error(err); return; } console.log(data); });
Explicació:
require('fs')
: Importa el mòdul del sistema de fitxers de Node.js.fs.readFile()
: Llegeix el contingut d'un fitxer de manera asíncrona.
Exercici Pràctic
Objectiu: Crear un servidor HTTP que respongui amb "Hola, Node.js!" quan es faci una petició GET a la ruta /
.
Instruccions
- Crea un fitxer anomenat
server.js
. - Importa el mòdul HTTP.
- Crea un servidor HTTP que respongui amb "Hola, Node.js!".
- Fes que el servidor escolti al port 3000.
- Executa el servidor i comprova que funciona fent una petició GET a
http://localhost:3000/
.
Solució
const http = require('http'); const server = http.createServer((req, res) => { if (req.method === 'GET' && req.url === '/') { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hola, Node.js!\n'); } else { res.statusCode = 404; res.end('No trobat\n'); } }); const port = 3000; server.listen(port, () => { console.log(`Servidor en funcionament a http://localhost:${port}/`); });
Conclusió
Node.js és una eina poderosa per a la creació d'aplicacions de xarxa escalables i d'alt rendiment. Amb el seu model d'E/S no bloquejant i el motor V8 de Google Chrome, ofereix una plataforma ràpida i eficient per al desenvolupament de servidors web, aplicacions de xarxa, i molt més. En els següents mòduls, explorarem com configurar Node.js, escriure el teu primer programa, i utilitzar el REPL de Node.js per experimentar amb codi JavaScript en temps real.
Curs de Node.js
Mòdul 1: Introducció a Node.js
Mòdul 2: Conceptes Bàsics
Mòdul 3: Sistema de Fitxers i I/O
Mòdul 4: HTTP i Servidors Web
Mòdul 5: NPM i Gestió de Paquets
Mòdul 6: Framework Express.js
- Introducció a Express.js
- Configuració d'una Aplicació Express
- Middleware
- Routing en Express
- Gestió d'Errors
Mòdul 7: Bases de Dades i ORMs
- Introducció a les Bases de Dades
- Utilitzar MongoDB amb Mongoose
- Utilitzar Bases de Dades SQL amb Sequelize
- Operacions CRUD
Mòdul 8: Autenticació i Autorització
Mòdul 9: Proves i Depuració
- Introducció a les Proves
- Proves Unitàries amb Mocha i Chai
- Proves d'Integració
- Depuració d'Aplicacions Node.js
Mòdul 10: Temes Avançats
Mòdul 11: Desplegament i DevOps
- Variables d'Entorn
- Utilitzar PM2 per a la Gestió de Processos
- Desplegar a Heroku
- Integració i Desplegament Continu