Node.JS

Node.JS

Modèle standard pour serveur web

Un serveur avec une arborescence de fichier

  • C:\serveur\fichiers\index.html
  • C:\serveur\fichiers\style.css
  • C:\serveur\fichiers\script.css
  • c:\serveur\fichiers\img\chat.png
  • c:\serveur\fichiers\img\chien.png

Modèle standard pour serveur web

En correspondance avec les adresses des ressources

  • http://www.domain.com/index.html
  • http://www.domain.com/style.css
  • http://www.domain.com/script.css
  • http://www.domain.com/img/chat.png
  • http://www.domain.com/img/chien.png

Modèle standard pour serveur web

  • D'abord des ressources statiques
  • Après coup la possibilités de scripts CGI
    • Perl (avec l'extension ".pl")
    • PHP (avec l'extension ".php")
    • ASP (pour Active Server Pages, essentiellement avec le serveur IIS)
    • Mais aussi Python, Ruby...

Node.JS

  • Programme autonome
  • Moteur d'exécution V8 de Google
  • Plateforme d'exécution Javascript avec APIs spécialisées
  • Principes:
    • Éxécution pilotée par les évènements
    • Appels de fonctions asynchrones
    • Entrées/sorties non-bloquantes

Concept

On ne fait que répondre à des évènements

Modularité, agilité

Génération de routes spécialisées

Une interface...

void post(string message);


string get(int msgid);


List getAll();

int nber();

... en micro-service web

http://www.domain.com/service/post/message
  → {"code": 1}
  → {"code": 0, "err": ...} 
http://www.domain.com/service/get?msgid=42
  → {"code": 1, "msg": "Hello World"}
  → {"code": 0, "err": ...}
http://www.domain.com/service/getAll
  → ["Hello World", "", "FooBar"]
http://www.domain.com/service/nber
  →  8

Le concept du micro-service

Ensemble de services spécialisés interconnectés

Le concept du micro-service

Ensemble de services spécialisés interconnectés

Qui l'utilise ?

MS Azur

Walmart

Yahoo

Paypal

Ebay

LinkedIn

Pinterest

Mozilla

Exemple

Allons voir sur ce Replit

  • Le serveur tourne quelque part sur AWS
  • Une adresse est générée automatiquement
  • Modifions le serveur:
    • Une page pour la route par défaut
    • Du JSON en réponse
    • Un état
    • Utilisation de fetch
  • on utilisera https://replit.com/@kindjob5578/frontend.