Vous êtes sur la page 1sur 9

Node : Kesako ?

Cours 4 : Back-end en I Environnement d’exécution (runtime environment) de Javascript


I Permet d’exécuter du Javascript hors browser
I Créé en 2009
I Open-source et Cross-platforme
Web — Applications web et mobile
Christophe Gonzales I Bien adapté pour les  back-ends  :
I extrêmement scalable
I prévu pour du temps réel

Exécutions asynchrones !

Cours 3 : Back-end en Node/Express 2/34

Rappel sur l’architecture Apache/PHP Requêtes de plusieurs clients

client 1 thread 1 interpréteur


(browser) (apache) PHP
1 requête
client serveur web
(browser) (apache)
4 page HTML client 2 thread 2 interpréteur
(browser) (apache) PHP
3 page HTML 2 script
client 3 thread 3 interpréteur
(browser) (apache) PHP
interpréteur
PHP
Fonctionnement naturel de Apache/PHP :
I Multithreading
I Exécutions synchrones de PHP
Cours 3 : Back-end en Node/Express 3/34 Cours 3 : Back-end en Node/Express 4/34
Fonctionnement de Node Node en résumé

Exécutions Fonctionnement de Node :


client 1 longues (externes)
(rapide) 1 I Node s’appuie sur le moteur V8 de Google
5
4
7
I Mode asynchrone par défaut (non bloquant)

client 2
2
File I 1 seule thread
Node
(lent) d’événements
8 I Possède une file d’événements
3
I Node surveille cette file en  background 
6
client 3
(rapide) Autres avantages :

I Node : 1 seule thread ! I Modules : fs (file system), http, os, events, etc.

I Traitement asynchrone des requêtes I Librairie open-source conséquente

Cours 3 : Back-end en Node/Express 5/34 Cours 3 : Back-end en Node/Express 6/34

Cas d’étude NPM

I NPM : Node Package Manager

I Nouveau projet =⇒ npm init


 Account overview page  : back-end Java vs Node
I Installations de paquets :
I écrit 2 fois plus vite avec moins de développeurs
I Globalement : npm install -g paquet
I 33% de lignes de codes en moins
I Localement pour le projet : npm install paquet
I 2 fois plus de requêtes traitées par seconde
I Lister les paquets installés : npm -g list
I temps de réponse 35% plus rapides
I Cherchez des paquets disponibles : npm search paquet
source : https://medium.com/paypal-engineering/
node-js-at-paypal-4e2d1d08ce4f

Cours 3 : Back-end en Node/Express 7/34 Cours 3 : Back-end en Node/Express 8/34


Node et l’objet global (1/3) Node et l’objet global (2/3)

Problème : Comment créer des variables et fonctions dans un


fichier et les utiliser dans un autre ?

I Node fonctionne avec des modules

I 1 fichier ≈ 1 module

I Portée des variables et fonctions définies dans un fichier :


le fichier lui-même

Cours 3 : Back-end en Node/Express 9/34 Cours 3 : Back-end en Node/Express 10/34

Node et l’objet global (3/3) Exportations

Affichage du contenu du module :

I Instruction console.log(module) :
Module {
id: '.',
path: '/home/gonzales/enseignement/mobile-20-21/prog/node',
exports: {},
parent: null,
filename: '/home/gonzales/enseignement/mobile-20-21/prog/node/module_vars.js',
loaded: false,
children: [],
paths: [
'/home/gonzales/enseignement/mobile-20-21/prog/node/node_modules',
'/home/gonzales/enseignement/mobile-20-21/prog/node_modules',
]
}

Cours 3 : Back-end en Node/Express 11/34 Cours 3 : Back-end en Node/Express 12/34


Importations Les modules de Node
I Modules très bien documentés dans la documentation de Node
I Souvent, fonctions en 2 modes : synchrones et asynchrones
Utiliser les fonctions asynchrones !

Cours 3 : Back-end en Node/Express 13/34 Cours 3 : Back-end en Node/Express 14/34

Utilisations de fonctions synchrones/asynchrones Créer un serveur web en Node

Cours 3 : Back-end en Node/Express 15/34 Cours 3 : Back-end en Node/Express 16/34


Créer un serveur web avec de multiples pages Serveur web : Passage à l’échelle

Inconvénients du module http :

I Pénible si on a beaucoup de routes différentes


I Peu pratique si l’on a des routes paramétrées

Solution : utiliser Express

I Framework puissant et pratique pour gérer les routes


I Permet de réaliser des services (API) RESTfull
(REpresentational State Transfer)
I Permet de mettre en œuvre les opérations CRUD
(Create, Read, Update, Delete)

Cours 3 : Back-end en Node/Express 17/34 Cours 3 : Back-end en Node/Express 18/34

Opérations CRUD et méthodes HTTP Créer un serveur web avec Express


Op. CRUD Signification méthode HTTP
Create créer de nouvelles données POST
Read récupérer des données GET
Update mise à jour de données PUT
Delete supprimer des données DELETE

I Exemple Angular :

export class CoursesService {


constructor( private http : HttpClient ) { }

getCourses () : Observable<Course[]> {
return this.http. get<Course[]>(
'http://127.0.0.1/forum/getCourses.php'
);
}
}

Cours 3 : Back-end en Node/Express 19/34 Cours 3 : Back-end en Node/Express 20/34


Spécifier le numéro de port d’écoute Les routes paramétrées

Cours 3 : Back-end en Node/Express 21/34 Cours 3 : Back-end en Node/Express 22/34

Les paramètres optionnels : query strings Les posts et leurs données (1/3)

Cours 3 : Back-end en Node/Express 23/34 Cours 3 : Back-end en Node/Express 24/34


Les posts et leurs données (2/3) Les posts et leurs données (3/3)

Cours 3 : Back-end en Node/Express 25/34 Cours 3 : Back-end en Node/Express 26/34

La bonne organisation des fichiers Requêtes Mysql (1/2)

Cours 3 : Back-end en Node/Express 27/34 Cours 3 : Back-end en Node/Express 28/34


Requêtes Mysql (2/2) Mysql : vers un code apparemment séquentiel (1/2)

Cours 3 : Back-end en Node/Express 29/34 Cours 3 : Back-end en Node/Express 30/34

Mysql : vers un code apparemment séquentiel (2/2)) Requêtes Mysql et Express

Cours 3 : Back-end en Node/Express 31/34 Cours 3 : Back-end en Node/Express 32/34


Requêtes Mysql et Express : organisation du code Async : toujours des promesses. . .

Cours 3 : Back-end en Node/Express 33/34 Cours 3 : Back-end en Node/Express 34/34

Vous aimerez peut-être aussi