Node est un environnement server open source , cross platform qui tourne avec moterur JS V8 de Chrome et execute du Javascript en dehors du navigateur
Event driven, non blocking
Comment fonctionne NodeJS :

Pour utiliser Node.js il faut premierement l'installer : https://nodejs.org/en/
Pour voir l'exécution du code dans la console
node nom-du-fichier.js
NodeJS rôle :


// require ('fs') recupere les methodes pour gérer les fichiers
const fs = require('fs');
fs.writeFileSync('hello.txt', 'Hello World from nodeJS')
const http = require('http');
const server = http.createServer((req, res) => {
console.log(req.url, req.method, req.headers);
// process.exit();
res.setHeader('Content-Type', 'text/html');
res.write('<html>');
res.write('<head><title>My first page</title></head>')
res.write('<body><h1>Hello from node.js server</h1></body>');
res.write('</html>');
res.end();
});
server.listen(3000);
// on ouvre le naviguateur localhost:3000 et on retrouve l'HTML ecrit plus haut
Un buffer peut etre vu comme un arret de bus, il stope la data transmise par paquets pour lui appliquer des transformations. Puis la data reprend son chemin

const http = require('http');
const fs = require('fs');
const server = http.createServer((req, res) => {
const url = req.url;
const method = req.method;
if (url === '/') {
res.write('<html>');
res.write('<head><title>Enter message</title></head>')
// rediriger vers /message avec POST notre message
res.write('<body><form action="/message" method="POST"><input name="message" type="text"><button type="submit">Send</button></form></body>');
res.write('</html>');
return res.end();
}
if (url === '/message' && method === 'POST') {
const body = [];
req.on('data', (chunk) => {
console.log(chunk);
// log : <Buffer 6d 65 73 73 61 67 65 3d 48 65 6c 6c 6f>
body.push(chunk);
})
return req.on('end', () => {
const parsedBody = Buffer.concat(body).toString();
const message = parsedBody.split('=')[1];
console.log(message)
// log : hello
fs.writeFileSync('message.txt', message, (error) => {
res.statusCode = 302;
res.setHeader('Location', '/');
return res.end();
});
});
}
res.setHeader('Content-Type', 'text/html');
res.write('<html>');
res.write('<head><title>My first page</title></head>')
res.write(`<body><h1> Hello </h1></body>`);
res.write('</html>');
return res.end();
});
server.listen(3000);
