Article original : JavaScript Concepts to Know Before Learning Node.js
Avant l'existence de Node.js, JavaScript ne pouvait être exécuté que dans le navigateur. Il ne pouvait être utilisé que comme langage de script pour le développement web frontend.
Ensuite, Node.js est arrivé pour libérer JavaScript de cette confinement. Il a rendu JavaScript omniprésent (ce qui signifie qu'il peut maintenant être exécuté partout).
Node.js est un environnement d'exécution JavaScript qui permet aux développeurs JavaScript d'écrire des outils en ligne de commande et des scripts côté serveur en dehors d'un navigateur.
Apprendre Node.js permet aux développeurs JavaScript d'écrire du code côté serveur et du code pour des systèmes embarqués. Cela ouvre des opportunités dans le développement backend et la programmation matérielle.
Mais, avant de plonger dans Node.js, un développeur JavaScript doit apprendre et comprendre certains concepts JavaScript.
Dans cet article, vous allez apprendre les concepts JavaScript que vous devez comprendre avant d'apprendre Node.js.
Avant de continuer avec l'article, vérifiez les prérequis.
Prérequis
Pour suivre cet article, vous devez avoir quelques connaissances de base sur :
JavaScript
La console du navigateur (c'est là que vous exécuterez votre code).
Maintenant que nous avons cela hors de notre chemin, plongeons dans l'article, en commençant par les expressions.
Expressions
Une expression est une unité ou un bloc de code qui évalue une valeur.
Il existe cinq catégories de base d'expressions en JavaScript : les expressions primaires, les expressions arithmétiques, les expressions de chaîne, les expressions logiques et les expressions du côté gauche.
Expressions primaires
Les expressions primaires consistent en des mots-clés de base en JavaScript. Un exemple courant est le mot-clé this :
this['item'];
this.item;
Plus tard dans cet article, vous en apprendrez davantage sur le mot-clé this.
Expressions arithmétiques
Un opérateur arithmétique prend des valeurs numériques comme opérandes et retourne une valeur numérique. Les opérandes et l'opérateur constituent l'expression arithmétique :
2 + 3;
2 * 3;
2 ** 3;
Expressions de chaîne
Lorsque les chaînes sont concaténées, elles forment des expressions de chaîne :
console.log('Mon nom est' + 'Peter');
Expressions logiques
Les expressions logiques sont des expressions dans lesquelles diverses valeurs sont comparées :
10 > 2;
2 < 10;
c === 2 || d === 10;
Expressions du côté gauche
Les expressions du côté gauche sont des expressions où des valeurs sont assignées à une variable :
// variables
a = 2;
// propriétés d'objet
obj = {};
obj.name = 'Paul';
Types de données
Il existe 8 types de données en JavaScript : String, Number, Boolean, Object, Null, Undefined, Symbol et BigInt.
String
Le type string représente des données textuelles. Une chaîne est entourée d'une apostrophe ou d'une guillemet.
Chaque élément d'une chaîne occupe une certaine position dans la chaîne. Le premier élément est à l'index 0, et le deuxième et le troisième sont aux index 1 et 2 respectivement.
Voici un exemple de chaîne :
let name = 'Yusuf';
let newName = "Joseph";
Number
Les types de nombres sont stockés en format 64 bits, également connus sous le nom de nombres à virgule flottante en double précision.
Ils consistent en des nombres qui sont dans la plage de -(253 - 1) et (253 - 1), ces deux nombres étant inclus. Ces deux nombres sont connus sous le nom de MIN_SAFE_INTEGER et MAX_SAFE_INTEGER respectivement.
Les nombres qui dépassent cette plage appartiennent à un autre type de données appelé BigInt.
Voici un exemple d'entier positif, d'un flottant et d'un entier négatif :
let number = 15;
let anotherNumber = 1.5;
let lastNumber = -3;
Boolean
Le type booléen est logique et n'a que deux valeurs : vrai ou faux. Il est couramment utilisé dans les boucles et les instructions conditionnelles.
Dans l'exemple ci-dessous, j'ai déclaré des variables et leur ai assigné une valeur de vrai et faux respectivement.
Ensuite, j'ai créé une instruction conditionnelle qui retourne 1 si la variable bool est vraie ou -1 si elle est fausse. Elle retourne zéro si elle n'est ni vraie ni fausse.
let positive = true;
let negative = false;
let bool = false;
// instruction conditionnelle
if (bool) {
return 1;
} else if (bool) {
return -1;
} else {
return 0;
}
Object
Un type d'objet vous permet de stocker des collections de données. Les données sont stockées dans une paire d'accolades et un format de paire clé-valeur. Les clés d'objet doivent être textuelles (par exemple une chaîne).
Un objet peut stocker n'importe quel autre type de données, comme une chaîne, un nombre, des tableaux, des booléens, etc.
Dans l'exemple ci-dessous, j'ai créé un objet nommé myObject, et lui ai donné trois clés avec leurs valeurs correspondantes :
let myObject = {
name: "Gabriel",
number: 15,
developer: [true, "Daniel", 1]
}
Null
Les types de données Null sont des types de données spéciaux. Ils ont la valeur null, ce qui signifie que la valeur est inconnue ou vide :
let unknown = null;
Undefined
Contrairement à null, undefined signifie qu'une variable est déclarée et non assignée à une valeur. Une variable peut également être assignée à undefined spécifiquement :
let name = undefined;
let newName;
console.log(newName);
Symbol
Les symboles sont utilisés pour créer des valeurs uniques. Ils sont créés en appelant la fonction Symbol(). Chaque fois que la fonction Symbol() est invoquée, elle crée une nouvelle valeur unique.
Les symboles sont gardés cachés ou privés et ne peuvent être utilisés qu'en interne. Par exemple, ils peuvent être utilisés comme clés dans un objet. Lorsque vous essayez d'obtenir la liste des clés dans un objet où un symbole fait partie de ses clés, la clé de symbole ne sera pas affichée.
Vous pouvez passer un paramètre à la fonction symbole pour servir de description pour le symbole lors de son débogage dans la console :
let firstSymbol = Symbol();
let anotherSymbol = Symbol(anotherSymbol);
BigInt
BigInt est un type spécial de nombre qui fournit un support pour des nombres avec une longueur qu'un type de nombre normal ne peut pas contenir (comme des nombres qui dépassent la limite d'entier sûr).
Il peut être créé en ajoutant n à la fin d'un entier ou en passant un nombre dans la fonction BigInt :
let bigNumber = 175337823472347884278247898427427427642n;
let newBigNumber = BigInt(1624743724724724898718247248744774227422n);
let anotherBigNumber = BigInt(14);
Classes
Une classe JavaScript est un modèle pour créer des objets. Elle contient des données et des fonctions qui manipulent les données.
Les classes ont été introduites dans JavaScript dans la version ECMAScript 2015 (ES6) de JavaScript.
Les fonctions utilisées dans les classes sont appelées méthodes.
Il existe une syntaxe de base pour déclarer des classes qui ressemble à ceci :
class TemplateClass {
constructor() {...};
method() {...};
method() {...};
}
À partir de la syntaxe, vous pouvez créer une classe nommée Visitor :
class Visitor {
constructor(name) {
this.name = name;
}
introduce() {
console.log(`Mon nom est ${this.name} et je suis un visiteur`)
}
}
Vous pouvez créer une nouvelle classe à partir de cette classe en utilisant la syntaxe de nouvelle classe. La classe nouvellement créée peut accéder à toute méthode de sa classe parente :
let visitor = new Visitor("Jeff");
// visitor peut appeler la méthode introduce dans sa classe parente.
visitor.introduce();
Variables
Une variable est un stockage nommé pour les données JavaScript. Les variables JavaScript peuvent être déclarées de trois manières :
En utilisant le mot-clé
varEn utilisant le mot-clé
letEn utilisant le mot-clé
const
Comment déclarer des variables en utilisant le mot-clé var
Les variables déclarées avec le mot-clé var sont fonctionnelles et peuvent être redéclarées :
var num = 1;
// num peut être redéclarée
var num = 2;
Comment déclarer des variables en utilisant le mot-clé let
Les variables déclarées avec le mot-clé let sont bloquées et ne peuvent pas être redéclarées - elles ne peuvent être réassignées :
let fruit = "banana";
// fruit ne peut être réassignée
fruit = "orange";
Comment déclarer des variables en utilisant le mot-clé const
Les variables déclarées avec le mot-clé const sont bloquées et ne peuvent pas être redéclarées ou réassignées (ce qui signifie qu'elles sont constantes) :
const bestStudent = "Daniel";
Fonctions
Une fonction est un bloc de code qui effectue une tâche spécifique. Elle peut être déclarée en utilisant le mot-clé function :
function doSomething() {
return "Fait quelque chose";
}
Une fonction prend des entrées appelées arguments et produit des résultats.
Pour exécuter une fonction, vous invoquerez la fonction en appelant le nom de la fonction avec des parenthèses :
function addNumbers(a, b) {
return a + b;
}
addNumbers();
Vous pouvez assigner une fonction à une variable et appeler la variable lorsque vous voulez invoquer la fonction :
function addNumbers(a, b) {
return a + b;
}
let numberAddition = addNumbers(2, 3)
numberAddition();
Fonctions fléchées
Les fonctions fléchées sont une manière concise et compacte d'écrire une fonction. Elles ont certaines limitations délibérées dans leur utilisation :
Elles ne peuvent pas être utilisées comme méthode.
Elles ne peuvent pas être utilisées comme constructeur.
Les fonctions fléchées ne peuvent pas utiliser yield dans leur propre corps.
Voici la syntaxe pour une fonction fléchée :
const doSomething = () => {
return "Faire quelque chose";
}
Une fonction fléchée peut également prendre un argument.
const multiplyNumbers = (a, b) => {
return a * b;
}
Mot-clé this
Le mot-clé this en JavaScript fait référence à un objet qui exécute une fonction ou un code.
Le mot-clé this peut être utilisé dans différents contextes - le contexte dans lequel le mot-clé this est utilisé détermine à quoi il fait référence.
Le mot-clé this peut être utilisé :
Dans une méthode d'objet.
Seul.
Dans les liaisons de méthodes d'objet.
Comment utiliser le mot-clé this dans une méthode d'objet
Le mot-clé this fait référence à l'objet chaque fois qu'il est utilisé comme méthode d'objet :
intro : function() {
return "Mon nom est" + this.name "et, je suis un" + this.occupation;
}
Comment utiliser le mot-clé this seul
Lorsque this est utilisé seul, il fait référence à l'objet global :
let wes = this;
Comment utiliser le mot-clé this dans les liaisons de méthodes d'objet
Lorsque this est utilisé dans une méthode d'objet, il fait référence à l'objet :
let student = {
firstName : "Juliana",
lastName : "Carpe",
myFunction : function() {
return this;
}
};
Boucles
Les boucles sont utiles pour exécuter un bloc de code un certain nombre de fois en fonction de certaines conditions spécifiées. Il existe différents types de boucles en JavaScript :
Boucles
forBoucles
for ... inBoucles
for ... ofBoucles
whileBoucles
do ... while
Comment utiliser les boucles for
Les boucles for sont utilisées pour exécuter un bloc de code un certain nombre de fois :
for (let i = 0; i < 5; i++) {
return i;
}
Comment utiliser les boucles for ... in
Les boucles for ... in sont utilisées pour parcourir les propriétés d'un objet :
for (let prop in obj) {
return obj.prop;
}
Comment utiliser les boucles for ... of
Les boucles for ... of sont utilisées pour parcourir les valeurs des objets itérables comme les tableaux, les chaînes, les maps, etc. :
let numArr = [2, 4, 6, 8]
for (let val of numArr) {
return val ** 2
}
Comment utiliser les boucles while
Les boucles while sont utilisées pour exécuter un bloc de code tant qu'une certaine condition reste vraie :
while (i < 20) {
return i;
i++;
}
Comment utiliser les boucles do ... while
Les boucles do ... while exécutent d'abord un bloc de code sans aucune condition. Tant qu'une certaine condition reste vraie, elle continue à exécuter le bloc de code :
let i = 3;
do {
return i;
i++;
}
while (i < 4)
Portées
La portée est le contexte actuel d'exécution. C'est là que les variables et les expressions peuvent être accessibles.
Il existe un arrangement hiérarchique de la portée en JavaScript. Cela permet aux portées inférieures d'accéder aux portées supérieures.
Les portées en JavaScript sont :
Portée globale
Portée de module
Portée de fonction
Portée de bloc
La portée globale est la portée par défaut pour tous les codes exécutés en mode script, tandis que la portée de module est la portée par défaut pour tous les codes exécutés en mode module.
La portée de fonction est créée par les fonctions, tandis que la portée de bloc est créée par les variables.
Voici un exemple de portée de fonction et de portée de bloc :
// portée de fonction
function introduce(name) {
let age = 12;
console.log(`Mon nom est ${name}`);
console.log(`J'ai ${age} ans`);
}
let firstAge = 13
// portée de bloc
if (firstAge === 13) {
let secondAge = 20;
console.log(`J'ai ${secondAge} ans`);
}
Tableaux
Un tableau est un type spécial d'objet qui stocke des données sous une forme ordonnée.
Les tableaux peuvent être déclarés de deux manières :
En utilisant des crochets.
En utilisant le constructeur
Array().
Comment déclarer des tableaux en utilisant des crochets
C'est la manière courante de créer un tableau. Cela se fait en enveloppant les éléments du tableau dans une paire de crochets :
let array = [1, 3, "a", "c"];
Comment déclarer des tableaux en utilisant le constructeur Array()
Le constructeur Array() fait la même chose que la notation entre crochets. Il peut être appelé avec ou sans le mot-clé new :
let anotherArray = Array(1, 2, 3, "go");
Comment accéder aux éléments de tableau
Les éléments de tableau peuvent être accessibles de trois manières :
en utilisant leur index.
en utilisant la propriété
lengthdu tableau.en utilisant une boucle
Comment accéder à un élément de tableau en utilisant son index
Vous appelez le nom du tableau avec un crochet contenant l'index que vous souhaitez accéder :
let newArray = ["Idris", "Daniel", "Joseph"];
// Pour accéder au premier élément
let firstElement = newArray[0];
console.log(firstElement); // Idris
// Pour accéder au deuxième élément
let secondElement = newArray[1];
console.log(secondElement); // Joseph
Comment accéder à un élément de tableau en utilisant la propriété length du tableau
Vous pouvez obtenir la longueur du tableau en utilisant la propriété length. Ensuite, vous soustrayez un nombre pour obtenir l'index de l'élément que vous souhaitez accéder :
let newArray = ["Idris", "Daniel", "Joseph"];
let length = newArray.length;
let firstElement = newArray[length - 3];
console.log(firstElement); // Idris
let secondElement = newArray[length - 2];
console.log(secondElement); // Joseph
Comment accéder à un élément de tableau en utilisant une boucle
Les éléments de tableau peuvent être accessibles en utilisant des boucles. Vous pouvez utiliser une boucle for, une boucle while ou une boucle for ... of :
let newArray = ["Idris", "Daniel", "Joseph"];
for (let i = 0; i < newArray.length; i++) {
return newArray[i]
}
Méthodes importantes de tableau
Il existe plus de quinze méthodes de tableau en JavaScript. Dans cet article, vous apprendrez celles qui sont les plus utiles dans Node.js :
push()etpop()shift()etunshift()map()sort()forEach()
Comment utiliser les méthodes push() et pop()
La méthode push() est utilisée pour ajouter un élément à la fin d'un tableau, tandis que la méthode pop() est utilisée pour supprimer un élément de la fin d'un tableau :
let arr = [1, 2, 3, 9]
arr.push(21);
console.log(arr) // [1, 2, 3, 9, 21]
arr.pop()
console.log(arr) // [1, 2, 3, 9]
Comment utiliser les méthodes unshift() et shift()
La méthode unshift() est utilisée pour ajouter un élément au début d'un tableau, tandis que la méthode shift() est utilisée pour supprimer un élément du début d'un tableau :
let arr = [1, 2, 3];
arr.unshift(0);
console.log(arr); // [0, 1, 2, 3]
arr.shift();
connsole.log(arr); // [1, 2, 3]
Comment utiliser la méthode map()
La méthode map() parcourt les éléments d'un tableau et appelle une fonction sur chaque élément du tableau. Elle retourne un nouveau tableau qui contient le résultat de chaque appel de fonction :
let fruits = ["Apple", "Grape", "Cashew"];
let mappedFruits = fruits.map(item => item + "s");
console.log(mappedFruits); // ["Apples", "Grapes", "Cashews"]
Comment utiliser la méthode sort()
La méthode sort() trie un tableau en place et retourne le même tableau sous une forme triée.
L'ordre par défaut de la méthode sort() est l'ordre croissant. Les chaînes sont triées par ordre alphabétique :
let numbers = [8, 7, 5];
let fruits = ["Apple", "Grape", "Cashew"];
let sortedNumbers = numbers.sort();
let sortedFruits = fruits.sort()
console.log(sortedNumbers); // [5, 7, 8]
console.log(sortedFruits); // ["Apple", "Cashew", "Grape"]
Comment utiliser la méthode forEach()
La méthode forEach() parcourt le tableau et appelle une fonction pour chaque élément du tableau :
let fruits = ["Apple", "Grape", "Cashew"];
fruits.forEach(fruit => console.log(fruit));
// "Apple"
// "Grape"
// "Cashew"
Littéraux de gabarit
Les littéraux de gabarit sont enfermés dans des backticks, tout comme les chaînes sont enfermées dans des guillemets. Ils vous permettent de stocker des chaînes multilignes et également d'interpoler des chaînes avec des expressions intégrées.
L'exemple ci-dessous montre un littéral de gabarit de base :
let basic = `J'écris des codes`
Vous pouvez écrire un littéral de gabarit qui stocke des chaînes multilignes comme ceci :
let multiLine = `J'écris des codes
Je débogue des codes`;
Vous pouvez utiliser le signe dollar et les accolades pour intégrer des expressions dans les littéraux de gabarit.
Dans l'exemple ci-dessous, la fonction myName est intégrée dans la variable display avec un littéral de gabarit :
function myName(Musab, Habeeb) {
alert("Musab Habeeb");
}
let display = `Cela affiche mon nom ${myName()}`
Mode strict
JavaScript est un langage négligé dans le sens où il vous permet d'écrire du code qui n'est pas autorisé dans d'autres langages. Certains du code que vous écrivez en JavaScript contient des erreurs, mais JavaScript ne génère pas d'erreur.
Le mode strict fait ce qui suit :
Il génère des erreurs pour les erreurs silencieuses de JavaScript.
Il corrige les erreurs qui rendent difficile pour les moteurs JavaScript d'effectuer des optimisations.
Il interdit certaines syntaxes susceptibles d'être définies dans les futures versions de l'ECMAScript.
Le mode strict fonctionne dans un fichier de script entier et des fonctions, mais il ne fonctionne pas dans les portées de bloc.
Pour invoquer le mode script, vous ajouterez la syntaxe "use strict"; en haut du code auquel vous souhaitez l'appliquer. Vous pouvez appliquer le mode strict à un script comme ceci :
"use strict";
let name = "Musab";
console.log(name);
De plus, vous pouvez appliquer le mode strict à une fonction comme ceci :
function sayHi(name) {
"use strict";
console.log(`Salut ${name}`);
}
Conclusion
Enfin, vous avez terminé l'apprentissage des concepts JavaScript que vous devez comprendre avant d'apprendre Node.js.
Tous ces concepts sont des concepts importants qu'un développeur JavaScript aspirant à apprendre Node.js devrait comprendre. Comprendre ces concepts rendra l'apprentissage de Node.js plus facile.
Mais, pour comprendre ces concepts en profondeur, vous pouvez faire plus de recherches sur chacun d'eux et lire d'autres articles. Continuez à apprendre, continuez à construire.