Découverte de NodeJS
Florian JOURNEAU
11 November 2018
Catégorie :
Javascript
Note prises sur suivi de la fomation Grafikart : https://www.grafikart.fr/formations/nodejs
Si vous souhaitez découvrir NodeJS, cet article ne sera pas suffisant, je vous encourage à regarder la formation ou vous rendre sur le site de nodejs.
Tester si node est installé :
Résultat attendu, la version de Node. (Si résultat différent, erreur d'install).
Création de notre premier script que l'on va mettre dans un fichier : server.js.
Pour exécuter ce fichier, taper
Si je met un
Création du serveur : fichier server.js
On peut désormais se rendre sur la page
1ère requête !
Coté console, on aura à l'exécution de la requête :
A noter que la ligne de commande n'est pas revenue. Le script tourne toujours. Pour l'arrêter il faudra faire Ctrl + C.
Et donc, il faudra bien penser a arrêter et redémarer le script pour tester chaque modification de notre fichier server.js.
Afficher un fichier index.html :
Lire des paramètres URL :
Bonjour Florian !
Gestion d'un mini template :
Dans le fichier HTML :
dans le fichier js :
Attention subtilité, pour que l'objet
Cf. la documentation de nodeJS pour vérifier comment fonctionne ces fonctions.
Afin de morceler le code, il est possible d'utiliser des modules :
monModule.js
script.js
npm est le gestionnaire de paquets officiel de Node.js.
Pour initialiser un projet, on tape via la commande :
Une fois les diverses question sur le projet répondues, on constate l'apparition d'un fichier
Pour télécharger un nouveau module
ou en synthaxe abbrégée
Exemple de fichier package.json généré avec npm init
On voit qu'il y a une partie
Maintenant, si on veut exécuter notre script, plutot que de taper node server.js, on va pouvoir directement taper :
On pourra également taper la version abrégée npm start.
On peut omettre run si on est sur que le script choisi n'entre pas en collision avec les paramètres existant de npm (c'est le cas pour start).
Si vous souhaitez découvrir NodeJS, cet article ne sera pas suffisant, je vous encourage à regarder la formation ou vous rendre sur le site de nodejs.
Tests sur l'installation de NodeJS
Tester si node est installé :
node --version
Résultat attendu, la version de Node. (Si résultat différent, erreur d'install).
C:\NodeJS\Tests>node --version
v12.18.0
C:\NodeJS\Tests>
Script serveur Web
Création de notre premier script que l'on va mettre dans un fichier : server.js.
Pour exécuter ce fichier, taper
node server.js
en exécutant cette commande dans le répertoire où se trouver le fichier server.js bien sûr.Si je met un
console.log('Hello world')
dans mon fichier js et que j'exécute, je voir le résultat :
C:\NodeJS\Tests>node server.js
Hello world
C:\NodeJS\Tests>
Création du serveur : fichier server.js
let http = require('http')
let server = http.createServer()
server.on('request', (request, response) => {
console.log('Il y a eu une requête')
response.writeHead(200, {
'Content-type' : 'text/html; charset=utf8;'
})
response.end('1ère requête !')
})
server.listen(8080)
On peut désormais se rendre sur la page
http://localhost:8080
où on poura voir :1ère requête !
Coté console, on aura à l'exécution de la requête :
C:\NodeJS\Tests>node server.js
Il y a eu une requête
A noter que la ligne de commande n'est pas revenue. Le script tourne toujours. Pour l'arrêter il faudra faire Ctrl + C.
Et donc, il faudra bien penser a arrêter et redémarer le script pour tester chaque modification de notre fichier server.js.
Example de scripts
Afficher un fichier index.html :
let http = require('http')
let fs = require('fs')
let server = http.createServer()
server.on('request', (request, response) => {
console.log('Il y a eu une requête')
fs.readFile('index.html', (err, data) => {
if (err) {
response.writeHead('404')
response.end("Ce fichier n'existe pas")
} else {
response.writeHead(200, {
'Content-type': 'text/html; charset=utf8;'
})
response.end(data)
}
})
})
server.listen(8080)
Lire des paramètres URL :
http://localhost:8080/?name=Florian
va retourner Bonjour Florian !
let http = require('http')
let fs = require('fs')
let url = require('url')
let server = http.createServer()
server.on('request', (request, response) => {
response.writeHead(200)
let query = url.parse(request.url, true).query
if (query.name === undefined) {
response.write('Bonjour !')
} else {
response.write('Bonjour ' + query.name + ' !')
}
response.end()
})
server.listen(8080)
Gestion d'un mini template :
Dans le fichier HTML :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bienvenue sur le site de test Node</title>
</head>
<body>
<h1>Bonjour {{ name }}</h1>
<p>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure, facilis? Ullam, cum nulla. Sunt eveniet incidunt
omnis natus ad blanditiis officiis libero nisi vero veniam reprehenderit, animi odit amet voluptatibus!
</p>
</body>
</html>
dans le fichier js :
let http = require('http')
let fs = require('fs')
let url = require('url')
let server = http.createServer()
server.on('request', (request, response) => {
response.writeHead(200)
let query = url.parse(request.url, true).query
name = query.name === undefined ? '' : query.name
console.log('Il y a eu une requête vers index.html')
fs.readFile('index.html', 'utf8', (err, data) => {
if (err) {
response.writeHead('404')
response.end("Ce fichier n'existe pas")
} else {
response.writeHead(200, {
'Content-type': 'text/html; charset=utf8;'
})
data = data.replace('{{ name }}', name)
response.end(data)
}
})
})
server.listen(8080)
Attention subtilité, pour que l'objet
data
soit bien considéré comme un objet string javascript, il faut préciser l'encodage (utf8) dans la méthode readFile : fs.readFile('index.html', 'utf8', (err, data) => { ... }
, sinon, l'objet data
sera considéré comme un objet buffer. Cf. la documentation de nodeJS pour vérifier comment fonctionne ces fonctions.
Modules javascript
Afin de morceler le code, il est possible d'utiliser des modules :
monModule.js
let my_private_variable = 'This var is only defined in file myModule.js'
let exported_var = 'Hello !'
module.exports = exported_var
script.js
// Appel du fichier monModule.js (situé dans le même répertoire
let newModule = require('./monModule')
console.log(newModule.exported_var) // va afficher : Hello !
NPM (Node Packages Manager)
npm est le gestionnaire de paquets officiel de Node.js.
Pour initialiser un projet, on tape via la commande :
npm init
Une fois les diverses question sur le projet répondues, on constate l'apparition d'un fichier
package.json
qui sauvegardera les modules à importer.Pour télécharger un nouveau module
npm install --save <nom_module>
ou en synthaxe abbrégée
npm i -S <nom_module>
Exemple de fichier package.json généré avec npm init
{
"name": "fjourneau/test_node",
"version": "1.0.0",
"description": "test",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js"
},
"author": "fJourneau",
"license": "ISC"
}
On voit qu'il y a une partie
scripts
avec 2 entrées, start
et test
.Maintenant, si on veut exécuter notre script, plutot que de taper node server.js, on va pouvoir directement taper :
npm run start
On pourra également taper la version abrégée npm start.
On peut omettre run si on est sur que le script choisi n'entre pas en collision avec les paramètres existant de npm (c'est le cas pour start).