Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
nodejs [Le 10/01/2021, 21:34] – [Voir aussi] 86.211.25.244nodejs [Le 25/02/2021, 18:11] (Version actuelle) – [Depuis les dépôts officiels] bcag2
Ligne 1: Ligne 1:
 +{{tag>programmation serveur }}
 +----
 +====== Nodejs ======
 +**Nodejs** est un logiciel permettant d'exécuter du [[wpfr>JavaScript]] côté serveur, contrairement à ce qu'on a l'habitude de voir avec le javascript côté client.
  
 +L'avantage d'utiliser **Nodejs** est que javascript permet l'exécution de tâches asynchrones, ce qui peut être pratique dans certaines situations. C'est de plus en plus souvent le cas avec le « nouveau » web qui arrive (html5/css3, etc.).\\
 +De plus, **Nodejs** permet de créer des applications « serveur » facilement grâce à des applications tierces qu'il prend en charge via un logiciel similaire à un [[:gestionnaire de paquets]].
 +
 +===== Pré-requis =====
 +
 +  * Disposer des [[:sudo|droits d'administration]].
 +  * Disposer d'une connexion à Internet configurée et activée.
 +    
 +===== Installation =====
 +
 +==== Depuis les dépôts officiels ====
 +<note important>
 +sous Bionic, cela installe la version LTS… 8.10 qui n'est plus supportée
 +</note>
 +Installer **Nodejs** sous ubuntu est simple, il suffit d'[[:tutoriel:comment_installer_un_paquet|installer les paquets]] **[[apt>nodejs,npm|nodejs npm]]**. Vous préfèrerez probablement installer [[#depuis_un_personal_package_archives_ppa_depots_officiels_nodesource|la version que met à disposition l'équipe de NodeJS]].
 +
 +=== Résumé en ligne de commande===
 +Le résumé, à saisir dans un [[:terminal]], utilise ici la [[:commande_shell|commande]] **[[:apt-get]]** :
 +<code>
 +sudo apt-get update
 +sudo apt-get install nodejs npm
 +</code>
 +
 +<note important>Il m'a fallu ajouter deux liens symboliques :
 +<code>
 +sudo ln -s /usr/bin/nodejs /usr/local/bin/node
 +sudo ln -s /usr/bin/npm /usr/local/bin/npm
 +</code>
 +</note>
 +<note important>Ou alors installer le paquet **[[apt>nodejs-legacy|nodejs-legacy]]**  qui installera les liens nécessaires à la compatibilité des conventions de nommage
 +<code>
 +sudo apt install nodejs-legacy
 +</code>
 +</note>
 +
 +Si vous souhaitez [[:compilation|compiler]] des projets avec **Nodejs** il vous faudra [[:tutoriel:comment_installer_un_paquet|installer]] **[[apt>nodejs-dev]]**. Notez que vous n'avez pas besoin de ce paquet pour développer des projets en Javascript, il est utile en revanche si vous comptez développer des modules pour Nodejs, eux-mêmes écrits dans un autre langage (par exemple en C/C++).
 +
 +==== Depuis un Personal Package Archives (PPA) (dépôts officiels "nodesource" ====
 +
 +[[https://chrislea.com/2014/07/09/joining-forces-nodesource/|Chris Lea]] et [[https://nodesource.com/blog/chris-lea-joins-forces-with-nodesource|NodeSource]] se sont associés pour maintenir un nouveau PPA avec des versions stables plus récentes de Nodejs
 +
 +Chaque version de nodejs possède un script d'installation qui ajoute le dépôt correspondant au gestionnaire de paquet.
 +On les trouve ici : https://github.com/nodesource/distributions
 +
 +=== Pour installer nodejs 14.x (LTS : support jusqu'à avril 2023) : ===
 +
 +C'est la version recommandée pour vos applications en production.
 +
 +<code>
 +wget -qO- https://deb.nodesource.com/setup_14.x | sudo -E bash -
 +sudo apt install -y nodejs
 +</code>
 +  * [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt://nodejs|nodejs]]**.
 +
 +=== Pour installer nodejs 15.x : ===
 +<code>
 +wget -qO- https://deb.nodesource.com/setup_15.x | sudo -E bash -
 +sudo apt install -y nodejs
 +</code>
 +  * [[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt://nodejs|nodejs]]**.
 +
 +<note important>Pour installer des paquets supplémentaires avec npm, vous aurez peut être besoin d'installer **[[apt>build-essential]]**</note>
 +
 +
 +==== Au moyen du gestionnaire de versions n ====
 +**n**, cf. [[https://github.com/tj/n]], une fois installé, permet l'installation simplifié des différentes versions de //node//.
 +Si besoin, installer tout d'abord //curl// :
 +<code>sudo apt-get install curl </code>
 +puis **n**:
 +<code>sudo curl -o /usr/local/bin/n https://raw.githubusercontent.com/visionmedia/n/master/bin/n</code>
 +Puis affecter les droits à n:
 +<code>sudo chmod +x /usr/local/bin/n</code>
 +et enfin, installer //node//
 +<code>
 +sudo n stable
 +</code>
 +
 +
 +
 +
 +
 +===== Utilisation basique =====
 +Voici un exemple d'application javascript que pourrait exécuter **Nodejs**:
 +<file javascript app.js>
 +setTimeout(function() {
 +console.log('Coucou'); // écrit un message dans la console au bout de deux secondes
 +}, 2000);
 +console.log('toi'); // écrit un message dans la console
 +</file>
 +Pour exécuter cette application, il vous suffit de saisir dans un [[:terminal]] la [[:commande_shell|commande]] suivante:
 +<code>node app.js</code>
 +Sur Ubuntu 13.04 la commande de lancement est :
 +<code>nodejs app.js</code>
 +
 +Bien entendu une telle application n'a aucun intérêt, c'est juste pour vous montrer de façon rapide comment cela fonctionne.\\
 +L'idée serait plutôt de créer une application serveur dont voici un exemple :
 +<file javascript app.js>
 +var http = require('http');
 +var port = 8080;
 +http.createServer(function (req, res) {
 +res.writeHead(200, {'Content-Type': 'text/html'});
 +res.write('Salut tout le monde !');
 +res.end();
 +}).listen(port);
 +console.log("Serveur tourne sur http://localhost:"+port);
 +</file>
 +Pour comprendre ce code vous devriez jeter un coup d'oeil à la [[http://nodejs.org/docs/latest/api/index.html|documentation officielle]].
 +
 +Bien entendu **Nodejs** n'a pas uniquement vocation à créer des petits serveurs comme celui-ci. Mais pour aller plus loin il va falloir utiliser des [[# Ajout de modules|modules]].
 +
 +===== Ajout de modules =====
 +Ajouter un module à **Nodejs** est extrêmement simple. Depuis un [[:terminal]] tapez la ligne suivante :
 +<code>npm install express</code>
 +//Express.js// est un module qui vous évitera de réécrire le code pour un [[wpfr>Serveur_HTTP|serveur http]] à chaque application.\\ N'hésitez pas à aller voir sa documentation.
 +
 +De la même façon vous pourrez installer beaucoup d'autres modules, à vous de les trouver.
 +
 +===== Désinstallation =====
 +
 +Pour supprimer cette application, il suffit de [[:tutoriel:comment_supprimer_un_paquet|supprimer son paquet]]. Selon la méthode choisie, le configuration globale de l'application est conservée ou supprimée. Les journaux du système, et les fichiers de préférence des utilisateurs dans leurs dossiers personnels sont toujours conservés.
 +
 +
 +===== Voir aussi =====
 +  * [[https://nodejs.org|site officiel nodejs.org]] (en)
 +  * [[https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager|Installer nodejs sous linux]] (en)
 +  * [[http://nodejs.org/docs/latest/api/index.html|Documentation de nodejs]] (en)
 +  * [[https://github.com/nodejs/LTS#lts-schedule|la feuille de route (roadmap) des versions stables]] (en)
 +  * [[https://www.hostinger.fr/tutoriels/comment-installer-node-js-sur-ubuntu|Tuto installation de NPM et nodjs par nvm]] (fr)
 +----
 +//Contributeur principal : [[utilisateurs:nekdev]].//