NodeJS

Node.js est un environnement bas niveau permettant l’exécution de JavaScript côté serveur. C’est un langage événementiel, il n’y a qu’une tâche dans un programme (Thread). Un programme node.js peut contenir beaucoup d’opérations, mais aucune d’elle n’est bloquante.

Installation :

Windowshttps://nodejs.org/en/

Ubuntu : https://www.cyberpratibha.com/install-node-js-in-ubuntu/

sudo curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash

sudo apt-get install -y nodejs

Généralités :

a) Une variable se déclare avec l’instruction ‘var’. On lui affecte une valeur grâce à l’opérateur ‘=’. Sa portée est globale dans tout le code. Utilisez ‘const’ si la valeur ne doit pas être changée et/ou affectée à différente valeur dans le code (exemple const a=1; puis a=2;). Enfin utilisez le mot clef ‘let‘ pour définir une variable qui aura la portée de la fonction ou de la zone de code (bloc (if..)) où elle a été déclarée.

Les variables, const et let peuvent être de type

a =true;//booléen 
a =1;//entier 
a =1.1;//flottant 
a ="Hello";//chaînedecaractères 
a ='Hello';//idem

Mais aussi de type tableau 

var t = [ 1, true, 'Hello' ]; 
var u = t[0]; // u = 1

Ou de type objet

var o = { prop1: 'Hello', prop2: 'World!' };
 var v = o['prop1']; // les deux lignes sont 
var v = o.prop1; // équivalentes

b) Les fonctions sont un type de variable

var f = function(i) { return i + 1; };

est identique à

function f() { return i + 1; }

un objet ou un tableau peut contenir une fonction

var o = { 
f: function(i) 
{ return i + 1; } 
}; 
var a =o.f(1); // a = 2

Node.js permet d’utiliser des outils tiers appelés modules. Il inclut de nombreux modules de base, exemple xxx. Par la fonction require, nous demandons à Node.js d’inclure le module xxx, et nous décidons d’accéder à ses méthodes via un objet xxx.

Les événements :

https://openclassrooms.com/fr/courses/1056721-des-applications-ultra-rapides-avec-node-js/1057200-les-evenements

Modèle-non-bloquant-Bocasay

Pour écouter des événements il faut connaitre quels événements existent pour le module choisi. Par exemple pour le module ‘http’

421286

omment écouter ces évènements ? Supposons par exemple qu’on souhaite écouter l’évènement « close » qui survient quand le serveur est arrêté. Il suffit de faire appel à la méthode on() et d’indiquer :

  • Le nom de l’évènement que vous écoutez (ici « close »)

  • La fonction de callback à appeler quand l’évènement survient

Exemple :

server.on(‘close’, function() {
// Faire quelque chose quand le serveur est arrêté
})

Il est aussi possible d’émettre des événements : inclure le module EventEmitter et créez un objet basé sur EventEmitter :

var EventEmitter = require(‘events’).EventEmitter;

var jeu = new EventEmitter();

Pour émettre un événement, il suffit de faire appel à emit()depuis l’objet basé sur EventEmitter.

jeu.emit(‘gameover’, ‘Vous avez perdu !’);

Et pour écouter cet événement :
jeu.on(‘gameover’, function(message) { });
Exemple complet :

var EventEmitter = require(‘events’).EventEmitter;

var jeu = new EventEmitter();

jeu.on(‘gameover’, function(message){
console.log(message);
});

jeu.emit(‘gameover’, ‘Vous avez perdu !’);

Serveur web :

Pour créer un serveur web il suffit d’écrire :

const {createServer} = require(‘http’);

const server = createServer((request, response) => {
response.writeHead(200, {‘Content-Type’: ‘text/plain’});
response.end(‘Hello World\n’);
});

server.listen(3000, () => console.log(`Adresse du serveur : http://localhost:3000`));

Sauvegardez ce code dans un fichier serveur.js puis exécutez le en tapant node serveur.js puis ouvrez votre navigateur et entrez http://localhost:3000/ pour voir le résultat !

Une autre manière d’écrire ce code :

var http = require("http");
http.createServer(function(request, response) {
  response.writeHead(200, {"Content-Type": "text/plain"});
  response.write("Hello World");
  response.end();
}).listen(3000);

On peut changer aussi l’adresse ip :

listen(3000, '127.0.0.1')

Pour récupérer du code JSON (exemple le nom de la ville du navigateur qui se connecte via l’url : https://geoip-db.com/json/)

const https = require(‘https’);
https.get(‘https://geoip-db.com/json/’, (resp) => {
let data = «  »;
// A chunk of data has been recieved.
resp.on(‘data’, (chunk) => {
data += chunk;
});
// The whole response has been received. Print out the result.
resp.on(‘end’, () => {
console.log(JSON.parse(data).city);});
}).on(« error », (err) => {
console.log(« Error:  » + err.message);
});

EndPoints :

Permet de créer des WebServices :

exports.endpoint = function(request, response) {
response.end(« Hello world! »);
}

Donne : https://testendpoind-bm9nj7q0d0gu.runkit.sh/

Pour récupérer le résultat d’un appel à une adresse HTTPs :

const https = require(« https »);

///////////////////////////////

var query = « FeteDateLast.php?cmd=demain »;

httpGet(query, (theResult) => {
console.log(« sent :  » + query);
console.log(« received :  » + theResult);
const theFact = theResult;

const speechOutput = theFact;

});
/////////////////////////

function httpGet(query, callback) {
https.get(« https://site.com/ ».query, (resp) => {
let data = «  »;
// A chunk of data has been recieved.
resp.on(« data », (chunk) => {
data += chunk;
});
// The whole response has been received. Print out the result.
resp.on(« end », () => {
//console.log(JSON.parse(data).mainText);
callback(JSON.parse(data).mainText);
});
}).on( » error « , (err) => {
callback(« Error:  » + err.message);
});

}

Astuces :

str.trim()

function test(t) {
if (t === undefined) {
return ‘Undefined value!’;
}
return t;
}

let x;

console.log(test(x));
// expected output: « Undefined value! »

Tools :

https://runkit.com : Emulateur OnLine permet de sauvegarder le code sur GitHub

EXPRESS :

https://openclassrooms.com/fr/courses/1056721-des-applications-ultra-rapides-avec-node-js/1057503-le-framework-express-js

https://codeburst.io/build-a-weather-website-in-30-minutes-with-node-js-express-openweather-a317f904897b

https://engineering.paiza.io/entry/paizacloud_online_multiplayer_game

Références :

https://nodejs.developpez.com/tutoriels/javascript/redecouvrir-javascript-avec-nodejs/

http://putaindecode.io/fr/articles/js/es2015/const-let-var/

https://openclassrooms.com/fr/courses/1056721-des-applications-ultra-rapides-avec-node-js/1057200-les-evenements

https://www.twilio.com/blog/2017/08/http-requests-in-node-js.html

https://codeburst.io/three-awesome-courses-for-learning-node-js-d7f761437101

Articles récents
Commentaires récents
fatima dans Bienvenue !
AdminDroid dans Bienvenue !
fatima dans Bienvenue !
Archives
Catégories
%d blogueurs aiment cette page :