Archives Wild Code School
Node.js

Node 01 - đŸ‘©â€đŸ« Introduction Ă  Node.js et npm

QuĂȘte 1 sur 5 · 6 images archivĂ©es

Objectifs

  • Comprendre ce qu'est Node.js et pourquoi l'utiliser.
  • Installer Node.js.
  • DĂ©couvrir ce que sont les paquets/modules et leurs avantages
  • Utiliser NPM de maniĂšre basique afin d'utiliser une dĂ©pendance externe dans une application.

Introduction

Node.js (parfois appelé simplement Node) est un environnement d'exécution JavaScript développé par Ryan Dahl en 2009.

Node permet d'exécuter du JavaScript en dehors d'un navigateur web, ce qui permet aux développeurs de programmer des applications JavaScript tournant dans presque tous les environnements (serveurs, objets connectés, robots, etc.).

GrĂące Ă  une collection de "modules" gĂ©rant des fonctionnalitĂ©s de base (gestion des requĂȘtes HTTP, accĂšs au systĂšme de fichiers, etc.), nous pouvons Ă©crire toutes sortes d'applications avec JavaScript et Node, telles que :

  • des serveurs Web
  • des services Web (APIs)
  • des scripts d'automatisation
  • des outils rĂ©seau
  • des applications en temps rĂ©el (chat, jeux, etc.)
  • ...

Node.js présente plusieurs avantages par rapport à d'autres technologies :

  • Asynchronisme et modĂšle non bloquant : Node.js utilise un modĂšle Ă©vĂ©nementiel non bloquant, ce qui le rend trĂšs efficace pour gĂ©rer de nombreuses connexions simultanĂ©es.
  • ÉcosystĂšme riche : NPM (Node Package Manager) permet d'accĂ©der Ă  des milliers de bibliothĂšques et outils prĂȘts Ă  l'emploi.
  • Polyvalence : Avec Node.js, nous pouvons crĂ©er aussi bien des applications backend, des outils en ligne de commande que des scripts d'automatisation.
  • Large communautĂ© : De nombreux dĂ©veloppeurs contribuent activement Ă  l'Ă©volution de Node.js et Ă  la crĂ©ation de nouveaux modules.

Sommaire

Installation

Pour installer node, suis ce lien vers le site officiel :

↗
https://nodejs.org/fr/download/
nodejs.org

Sélectionne ton systÚme d'exploitation entre Windows, macOS et Linux. Reste sur une version LTS et suis les instructions indiquées.

Si tu as un doute, fais-toi accompagner pour cette étape.

Une fois l'installation terminée, vérifie que Node.js et NPM sont bien installés en exécutant les commandes suivantes :

bash
node -v   # Vérifie la version de Node.js
npm -v    # Vérifie la version de NPM

Cas pratique

Crée un fichier nommé index.js dans ton répertoire utilisateur et crée 3 variables :

  1. Une de type string avec ton nom
  2. Un de type number avec ton Ăąge
  3. Enfin, console.log chacune de ces variables.
Voir la solution
javascript
const name = "J. Doe";
const age = 26;

console.log(name, age);

Exécute ce fichier avec la commande node index.js dans ton terminal :

bash
cd ~ # Se placer dans le répertoire utilisateur
node index.js

Node exécute ton code JavaScript en dehors du navigateur !

Attention

Tu peux écrire autant de JavaScript que tu veux mais souviens-toi que tu ne peux pas manipuler le DOM ici.

Modules

Les modules en Node.js sont des blocs de code rĂ©utilisables qui permettent d'organiser et de structurer une application. Ils peuvent ĂȘtre :

  • Internes (built-in) : dĂ©jĂ  inclus dans Node.js (par exemple fs pour gĂ©rer les fichiers).
  • Locaux : du code créés par toi dans des fichiers sĂ©parĂ©s.
  • Externes : installĂ©s avec NPM depuis une bibliothĂšque tierce (par exemple express).

Les modules facilitent la maintenance et la réutilisation du code dans un projet.

En Node.js, il existe deux types de gestion des modules :

  1. CommonJS (require/module.exports) : utilisé par défaut en Node.js jusqu'à récemment.
  2. ES Modules (import/export) : recommandé pour les nouveaux projets.

Nous allons voir les deux méthodes.

CommonJS (require / module.exports)

À cĂŽtĂ© de ton fichier index.js, crĂ©e un fichier userInformation.js avec ce contenu :

javascript
const name = "J. Doe";
const age = 26;

module.exports = { name, age };

Ce fichier est un module qui exporte des donnĂ©es avec l'instruction module.exports =. Ce qui est exportĂ© depuis un fichier peut ensuite ĂȘtre importĂ© depuis un autre fichier. Modifie index.js comme suit :

javascript
const { name, age } = require("./userInformation");

console.log(name, age);

L'expression require importe le contenu d'un autre fichier (ici le fichier userInformation.js).

Exécute à nouveau :

bash
node index.js

ES Modules (import / export)

Modifie userInformation.js ainsi :

javascript
export const name = "J. Doe";
export const age = 26;

Ce fichier est toujours un module qui exporte des donnĂ©es. Mais cette fois avec l'instruction export . Ce qui est exportĂ© depuis un fichier peut toujours ĂȘtre importĂ© depuis un autre fichier. Mais cette fois, tu devras utiliser une instruction import au lieu de require :

Dans index.js :

javascript
import { name, age } from "./userInformation.js";

console.log(name, age);

Exécute à nouveau :

bash
node index.js

C'est le mĂȘme mĂ©canisme qu'avec module.exports et require. Les mots-clĂ©s changent en export et import.

Attention

Tu ne dois pas mélanger les syntaxes : si tu fais du module.exports, tu dois l'utiliser avec require. Et si tu utiles export, tu dois le coupler avec import.

Durant la formation, nous utiliserons principalement export et import puisque c'est la norme recommandée pour des nouveaux projets. Cela reste important de savoir qu'une autre syntaxe existe.

NPM : Node Package Manager

NPM (Node Package Manager) est un outil essentiel en Node.js qui permet de gĂ©rer facilement des paquets (ou modules) externes. Ces paquets sont des morceaux de code rĂ©utilisables qui ajoutent des fonctionnalitĂ©s Ă  ton application (par exemple, mettre en forme du texte dans le terminal, faire des requĂȘtes HTTP, etc.).

Pourquoi utiliser des paquets ?

Les paquets permettent de ne pas "rĂ©inventer la roue". Par exemple, si tu veux ajouter des couleurs Ă  tes messages dans le terminal, tu peux utiliser un paquet dĂ©jĂ  existant (comme chalk) au lieu de tout coder toi-mĂȘme.

Initialisation d'un projet avec NPM

Avant d'installer un paquet, initialise un projet avec :

bash
cd ~ # Se placer dans le répertoire utilisateur
mkdir sandbox-npm
cd sandbox-npm
npm init -y

La commande npm init crée un fichier package.json qui contient des informations sur ton projet : nom, version, scripts, etc.

Installation d'un package

Pour installer un paquet localement (par exemple, chalk pour colorer le texte dans le terminal) :

bash
npm install chalk

Cela crĂ©e un dossier node_modules oĂč sont stockĂ©es les dĂ©pendances, et ajoute chalk Ă  package.json sous dependencies.

Utilisation d'un package

AprĂšs installation, importe le paquet dans ton fichier JavaScript. Exemple avec chalk (dans un fichier index.js dans ton projet sandbox-npm) :

js
import chalk from 'chalk';

console.log(chalk.blue('Hello npm!'));

Puis exécute le fichier :

bash
node index.js

Tu devrais voir Hello npm! en bleu !

Tu dois voir aussi un message de ce genre :

(node:293498) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file:///home/romain/sandbox-npm/index.js is not specified and it doesn't parse as CommonJS.
Reparsing as ES module because module syntax was detected. This incurs a performance overhead.
To eliminate this warning, add "type": "module" to /home/romain/sandbox-npm/package.json.

Quand tu crée un fichier package.json avec npm init, node cherche dans package.json un indice pour savoir si tu utilises la syntaxe CommonJS (require) ou la syntaxe ES Modules (import).

Le message t'indique comment donner cet indice Ă  node :

To eliminate this warning, add "type": "module" to /home/romain/sandbox-npm/package.json.

Tu dois ajouter "type": "module" dans ton fichier package.json :

json
{
  "type": "module",
  "name": "sandbox-npm",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "description": "",
  "dependencies": {
    "chalk": "^5.4.1"
  }
}

Exécute à nouveau :

bash
node index.js

Plus d'erreur :)

Désinstallation d'un package

Pour supprimer un paquet :

bash
npm uninstall chalk

Cela le retire aussi de package.json.

Le fichier .gitignore

Ne versionne jamais le dossier node_modules car il contient tous les fichiers des dépendances, ce qui peut peser trÚs lourd. Ajoute cette ligne dans un fichier .gitignore à la racine de ton projet :

node_modules/

Si tu as accidentellement versionné node_modules, tu peux facilement réparer ça :

Voir la solution
bash
# Once you have properly setup the  *.gitignore* file with "node_modules/" in it 
git rm -r --cached ./node_modules # remove all versioned files in node_modules from the index
git add . # add every file except what's in .gitignore to the index
git commit -m "un-version node_modules 😅" # save the changes
git push # send the modifications 

Résumé

  • Node.js est un environnement d'exĂ©cution JavaScript permettant d'exĂ©cuter du JS en dehors du navigateur.
  • Il est performant, asynchrone et dispose d'un Ă©cosystĂšme riche via NPM.
  • Les modules peuvent ĂȘtre built-in, locaux ou externes.
  • Deux systĂšmes de modules existent : CommonJS (require) et ESM (import).
  • NPM permet d'installer des dĂ©pendances et de gĂ©rer les versions facilement.

Avec ces bases, tu es prĂȘt Ă  explorer Node.js et son Ă©cosystĂšme ! 🚀

quiz
true|||true|||true
# Que signifie "npm" ?
[] Node portable mode
[x] Node package manager
[] Node picker manager
# Node.js est...
[] Une bibliothĂšque
[] Un framework
[x] Un environnement d'exécution
# Si nous voulons importer du code JS et le stocker dans une variable, nous devons l'utiliser :
[x] require et le chemin d'accĂšs oĂč se trouve ce code
[] juste require, Node peut trouver le chemin seul
[] Copier-coller le code dans le fichier oĂč tu en as besoin
# Comment installer un paquet depuis npm ?
[] npm install URLOfPackage
[x] npm install nameOfPackage
[] npm get nameOfPackage
# Quel est le but de "package.json" ?
[] lister tout le code interne de Node.js
[] Lister uniquement les informations du projet. 
[x] lister toutes les informations du projet, les scripts, ainsi que les paquets et les dépendances dont notre code a besoin pour fonctionner.
# Que contient le dossier `node_modules` ?
[x] Tout le code relatif aux paquets que nous utilisons
[] Une copie de notre code
[] Tout le dépÎt npm
# Il est recommandé de commit et de pousser le dossier `node_modules` ?
[] Oui, pas de soucis !
[x] Non ! Ne fais jamais ça !

Ressources partagĂ©es sur cette quĂȘte