Développer en JavaScript
ECMA Script (JavaScript)
<!DOCTYPE html><html><body><script src="myScript.js"></script></body></html>
- Writing into an alert box, using window.alert().
- Writing into the HTML output using document.write().
- Writing into an HTML element, using innerHTML.
- Writing into the browser console, using console.log().
Converting Variables to Numbers
Arrays
Loops
Debugging
Variables
En JavaScript, il y a trois types primitifs principaux :
- number (nombre) ;
- string (chaîne de caractères) ;
- boolean (valeur logique).
Et trois autres types de données primitifs : null, undefined et symbol.
JavaScript est un langage dit à types dynamiques et à typage faible. Cela signifie que vous pouvez initialiser une variable en tant que nombre, puis la réaffecter comme chaîne, ou tout autre type de variable. Un bloc de code est délimité par {}.
var
Avant l'arrivée de ES6, var était le seul moyen de déclarer une variable.
Scope
- est global quand la déclaratation a lieu en dehors d'une fonction
- est scopé à la fonction scoped quand la déclaration se trouve dans le corps d'une fonction
Les variables déclarées avec var peuvent être re-declarée and mises à jour.
Il n'y a aucun problème à écrire :
var myVariable = "string"var myVariable = 3
let
Depuis l'arrivée d'ES6, let est à présent la manière privilégiée pour déclarer une variable.
Une variable déclarée avec let est scopée au bloc. Comme avec var, une variable declarée avec let peut etre mise à jour dans son scope. A la différence de var, une variable délcarée avec let ne peut pas être redéclarée dans un même scope.
Comme avec var, les variables déclarées avec let sont posées sur la pile. A la différence de var qui initialislise une variable comme undefined, les variables déclarées avec let ne sont pas initialisées et leur usage sans initialisation provoquera une "Reference Error".
const
Variables declared with the const maintain constant values. It does not define a constant value. It defines a constant reference to a value.
const declarations are block scoped
const cannot be updated or re-declared
This means that the value of a variable declared with const remains the same within its scope. It cannot be updated or re-declared. So if we declare a variable with const, we can neither do this:
Every const declaration, therefore, must be initialized at the time of declaration.
This behavior is somehow different when it comes to objects declared with const. While a const object cannot be updated, the properties of this objects can be updated. Therefore, if we declare a const object as this:
const greeting = {message: "say Hi",
times: 4
}
Because of this you can NOT:
- Reassign a constant value
- Reassign a constant array
- Reassign a constant object
- Change the elements of constant array
- Change the properties of constant object
typeof
Valeur vs Référence
Les types primitifs tels que les nombres, les valeurs logiques et les chaînes sont passés par valeur. Ceci signifie que quand vous faites quelque chose comme :
let balanceExistante = 20;
let nouvelleBalance = balanceExistante; // 20
... c'est la valeur 20 qui est copiée dans la nouvelle variable (nouvelleBalance), et aucun lien n'est maintenu entre les deux variables.
Ce n'est pas le cas avec les objets et tableaux, qui sont passés par référence. Si vous n'y prenez pas garde, cela peut conduire à des comportements inattendus.
https://codeburst.io/explaining-value-vs-reference-in-javascript-647a975e12a0
Tableaux
Pour créer un tableau vide et l'enregistrer dans une variable, utilisez une paire de crochets :let artistes = [];
Vous pouvez aussi créer un tableau rempli en plaçant les éléments voulus à l'intérieur de ces crochets :
let artistes = ["NFT Kate", "Token Simon", "Will Ian"];
Vous pouvez ensuite accéder aux éléments de ce tableau par leur indice en base 0 :
let artisteUn = artistes[0]; // "NFT Kate"
let artisteDeux = artistes[2]; // "Will Ian"
let artisteInconnu = artistes[12] // undefined
Ajouter un élément à la fin d'un tableau avec la méthode push :
artistes.push("Cyber Alice"); // ajoute "Cyber Alice" en fin de tableau
Ajouter un élément au début du tableau plutôt qu'à la fin, utilisez la méthode unshift :
artistes.unshift("King Botasa"); // "King Botasa" est ajouté au début du tableau
Supprimer le dernier élément d'un tableau avec la méthode pop :
artistes.pop(); // supprimer le dernier élément du tableau
Objets JavaScript
Les objets JavaScript sont écrits en JSON (JavaScript Object Notation). Ce sont des séries de paires clés-valeurs séparées par des virgules, entre des accolades. Les objets peuvent être enregistrés dans une variable :
let myNFT = {name: 'Ape in the evening',
author: 'Trendy Artist',
rarity: 250,
isAvailable: true
};
notation pointée (dot notation)
>> let bookTitle = myBook.title;
>> let bookPages = myBook.numberOfPages
notation bracket (bracket notation)
let bookTitle = myBook["title"]; // "Ape in the evening"
let bookPages = myBook["numberOfPages"]; // 250
let propertyToAccess = "title";
let bookTitle = myBook[propertyToAccess]; // "Ape in the evening"
Classes
Les classes sont déclarées ainsi :
Le constructeur d'une classe est la fonction qui est appelée quand on crée une nouvelle instance de cette classe avec le mot clé new.
Pour attribuer le titre, l'auteur et le nombre de pages reçus à cette instance, utilisez le mot clé this et la notation dot. Même pas besoin de déclarer des propriétés.
class myNFT {constructor(artiste, name, adn) {
this.artiste = artiste;
this.name = name;
this.adn = adn;
}
}
Vous pouvez créer des instances par le mot clé new :
let myNFT = new myNFT("Trendy Artist", "Ape in the evening", 250);
Héritage de Classe
Fonctions
// On définit la fonction
const calculateAverageRating = (ratings) => {
if(ratings.length === 0) {
return 0;
}
let sum = 0;
for (let rating of ratings) {
sum += rating;
}
return sum / ratings.length;
}
Fonction fléchées
const wordArray = stringToTest.split(" ");
return wordArray.length;
}
Statiques
Opérateurs
+-
+=
-=
++
--
Instructions Conditionnelles
If/else
if (numberOfGuests == numberOfSeats) {// tous les sièges sont occupés
} else if (numberOfGuests < numberOfSeats) {
// autoriser plus d'invités
} else {
// ne pas autoriser de nouveaux invités
}
Il y a deux façons de vérifier si deux valeurs sont égales en JavaScript : == et ===, aussi appelées égalité simple et égalité stricte :
l'égalité simple vérifie la valeur, mais pas le type. Donc ceci renvoie la valeur true :
5 == "5"
par contre, l'égalité stricte vérifie à la fois la valeur et le type. Donc :
5 === "5"renvoie false , car on compare un number à une string .
De même, il y a deux opérateurs d'inégalité, != et !== , avec la même distinction.
Switch
switch (firstUser.accountLevel) {
case 'normal':
console.log('You have a normal account!');
break;
case 'premium':
console.log('You have a premium account!');
break;
case 'mega-premium':
console.log('You have a mega premium account!');
break;
default:
console.log('Unknown account type!');
}For
const numberOfPassengers = 10;
for (let i = 0; i < numberOfPassengers; i++) {
console.log("Passager embarqué !");
}
const passengers = ["Alexander","Kate'","Audrey","Tatiana"]
for (let i in passengers) {
console.log("Embarquement du passager " + passengers[i]);
}
for (let passenger of passengers) {
console.log("Embarquement du passager " + passenger);
}While
while (seatsLeft > 0 && passengersStillToBoard > 0) {
passengersBoarded++; // un passager embarque
passengersStillToBoard--; // donc il y a un passager de moins à embarquer
seatsLeft--; // et un siège de moins
}
Try Catch
try {// code susceptible à l'erreur ici} catch (error) {// réaction aux erreurs ici}
If/else
} else if (numberOfGuests < numberOfSeats) {
// autoriser plus d'invités
} else {
// ne pas autoriser de nouveaux invités
}
Il y a deux façons de vérifier si deux valeurs sont égales en JavaScript : == et ===, aussi appelées égalité simple et égalité stricte :
l'égalité simple vérifie la valeur, mais pas le type. Donc ceci renvoie la valeur true :
5 == "5"
par contre, l'égalité stricte vérifie à la fois la valeur et le type. Donc :
5 === "5"
renvoie false , car on compare un number à une string .
De même, il y a deux opérateurs d'inégalité, != et !== , avec la même distinction.
Switch
switch (firstUser.accountLevel) {case 'normal':
console.log('You have a normal account!');
break;
case 'premium':
console.log('You have a premium account!');
break;
case 'mega-premium':
console.log('You have a mega premium account!');
break;
default:
console.log('Unknown account type!');
}
For
const numberOfPassengers = 10;for (let i = 0; i < numberOfPassengers; i++) {
console.log("Passager embarqué !");
}
const passengers = ["Alexander","Kate'","Audrey","Tatiana"]
for (let i in passengers) {
console.log("Embarquement du passager " + passengers[i]);
}
for (let passenger of passengers) {
console.log("Embarquement du passager " + passenger);
}
While
while (seatsLeft > 0 && passengersStillToBoard > 0) {
passengersBoarded++; // un passager embarque
passengersStillToBoard--; // donc il y a un passager de moins à embarquer
seatsLeft--; // et un siège de moins
}
Try Catch
Opérateur Spread
Destructuration
const vehicles = ['mustang', 'f-150', 'expedition'];
// old way
const car = vehicles[0];
const truck = vehicles[1];
const suv = vehicles[2];
Here is the new way of assigning array items to a variable:
If we only want the car and suv we can simply leave out the truck but keep the comma:
const vehicles = ['mustang', 'f-150', 'expedition'];
const [car,, suv] = vehicles;
Destructuring comes in handy when a function returns an array:
Example
function calculate(a, b) {
const add = a + b;
const subtract = a - b;
const multiply = a * b;
const divide = a / b;
return [add, subtract, multiply, divide];
}
const [add, subtract, multiply, divide] = calculate(4, 7);
Manipulation du DOM
Les Evènements
Souris
- clientX / clientY : position de la souris dans les coordonnées locales (contenu du DOM) ;
- offsetX / offsetY : position de la souris par rapport à l'élément sur lequel on écoute l'événement
- pageX / pageY : position de la souris par rapport au document entier ;
- screenX / screenY : position de la souris par rapport à la fenêtre du navigateur ;
- movementX / movementY : position de la souris par rapport à la position de la souris lors du dernier événement mousemove
Appeler une API
Fetch
e.preventDefault();
fetch("https://mockbin.com/request", {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({value: document.getElementById("value").value})
})
.then(function(res) {
if(res.ok) {
return res.json();
}
})
.then(function(res) {
document.getElementById("result").innerHTML = res.postData.text;
});
}
Callbacks
Enchainer les requetes
callbacks
Promesses
Promesses
async/await
Méthode map
<ul className='nft-list'>
{nftList.map(({ id, cover, name, water, light }) => (
<NftItem
id={id}
cover={cover}
name={name}
water={water}
light={light}
/>
))}
</ul>
Installation
Une interface de développement est nécessaire et Visual Studio Code est très bien.
Pour développer en JavaScript, il faudra du code, le js, et un environnement d'execution, historiquement un navigateur web mais de nos jours des serveurs d'application existent.
Node.js est une plateforme logicielle libre en JavaScript, orientée vers les applications réseau évènementielles hautement concurrentes qui doivent pouvoir monter en charge.
Elle utilise la machine virtuelle V8, la librairie libuv pour sa boucle d'évènements, et implémente sous licence MIT les spécifications CommonJS.
Parmi les modules natifs de Node.js, on retrouve http qui permet le développement de serveur HTTP. Ce qui autorise, lors du déploiement de sites internet et d'applications web développés avec Node.js, de ne pas installer et utiliser des serveurs webs tels que Nginx ou Apache.
Concrètement, Node.js est un environnement bas niveau permettant l’exécution de JavaScript côté serveur. Nous allons l'utiliser dans un premier temps pour développer et ensuite pour executer notre code.
Source : Wikipedia
Installation de node sous linux Mint :
Source : SoftHints
sudo apt updatesudo apt install nodejs
Gestionnaire de Paquet NPM
L'installation de Node.js depuis les dépôts sera obsolète. Utiliser le module n pour mettre à jour :
npm install n -g
Then you can install the stable Node.js by:
or the latest:
n latest
Extensions
Configurer son projet
NPM
Commentaires
Enregistrer un commentaire