@Kalvn pour exécuter du JS sur Node quand tu veux avoir un maximum de contrôles appliqués par le compilateur tu peux aussi tout coder en Kotlin et transpiler tes sources en JS. Tu as un plugin Gradle et un plugin Maven qui gèrent ça pour toi.
On a du mal à se rendre compte à quel point Kotiln change la vie avant de l'avoir adopté. Je pense que le gain du passage de Java/C#/TS vers Kotlin est même plus important que le gain du passage de C/C++/ASM vers Rust, c'est dire !
Et avec le REPL des JRE 17+, on peut écrire des scripts en Kotlin (au sens Bash du terme), et ça c'est trop cool ! <3
Je me note :
- Angular 12.x => NodeJS 14
- Angular 13.x => NodeJS 16
- Angular 14.x => NodeJS 16
Les secrets des dépendances en JS.
Tout est dans le titre.
Le petit rappel qui va bien :
NodeJS c'est quoi ?
NodeJS est une machine virtuelle capable d'exécuter des applications écrites en JavaScript côté serveur ; avec la capacité de démarrer un serveur web, de se connecter à une base de données, d'écrire sur le disque, etc. NodeJS est basé sur le moteur JavaScript développé pour WebKit et fournit sa propre implémentation du standard ECMAScript 6 (aka. ES2016), c'est-à-dire la dernière version standardisée de JavaScript en ce début 2017.
NPM c'est quoi ?
NPM est le gestionnaire de dépendances/paquets de NodeJS. Il est founi avec l'installation de NodeJS et utilisé par les développeurs pour télécharger, installer et exécuter l'ensemble des dépendances transitives de leurs projets JavaScript.
NPM peut :
- Gérer les dépendances pour les librairies s'exécutant côté client.
- Gérer les dépendances pour les librairies s'exécutant côté serveur.
- Exécuter des commandes dans la syntaxe du shell courant (et donc toutes les commandes figurant dans le path du-dit shell).
Comment qu'on setup toussa ?
1) Télécharger la dernière version (stable de préférence) de NodeJS
- La dernière version LTS (pour Long Term Support) est disponible ICI.
- Veillez à choisir la version compatible avec votre système, c'est-à-dire OS + architecture (32 ou 64 bits).
2) Installer NodeJS
Décompresser le tar.gz téléchargé dans un répertoire dédié, par exemple /tools/apps/nodejs-6.9.1.
Modifier votre fichier ~/.profile ou au choix ~/.bashrc comme suit :
- Créer la variable d'environnement $NODE_HOME
export NODE_HOME="/tools/apps/nodejs-6.9.1"
- Ajouter le sous-répertoire $NODE_HOME/bin/ dans votre path système :
export PATH="$PATH:$NODE_HOME/bin"
- Veillez à bien enregistrer les changements et redémarrer votre console si vous avez modifié le fichier ~/.bashrc et votre session pour le fichier ~/.profile.
- Hop vous avez à présent NPM et NodeJS disponible sous les commandes npm et node depuis un shell.
3) Configurer NPM
N.B : Dans la suite, le répertoire /tools/repositories peut en réalité être celui de votre choix. Moi je stocke tout dans /tools (en fait dans /opt/tools mais on s'en fiche).
- Nous allons dire à NPM où stocker les versions zippées des librairies qu'il a téléchargé, pour cela il faut ajouter/modifier la ligne suivante dans le fichier ~/.npmrc.
cache="/tools/repositories/npm/cache"
- Ensuite nous allons indiquer à NPM où décompresser les librairies télécharger au point précédent en ajoutant au fichier ~/.npmrc
prefix="/tools/repositories/npm/modules"
- Modifier votre fichier ~/.profile ou au choix ~/.bashrc comme suit :
export NPM_MODULES="/tools/repositories/npm/modules" export PATH="$PATH:$NPM_MODULES/bin"
- Et encore une fois veillez à bien enregistrer les changements et redémarrer votre console si vous avez modifié le fichier ~/.bashrc et votre session pour le fichier ~/.profile.
4) Dis-nous comment ça marche en moins de 60 secondes ?
## Télécharger un outil et l'installer dans le répertoire global contenant les modules, par exemple Gulp :
npm install -g gulp
## Exécuter Gulp en tapant
gulp --version
## Télécharger un outil et l'installer uniquement pour votre projet (i.e dans le sous-répertoire ./node_modules):
npm install --save-dev gulp
## Exécuter Gulp en tapant
./node_modules/gulp/bin/gulp --version
## NDR : des fois il faut taper ceci à la place
node ./node_modules/gulp/bin/gulp.js --version
## Installer une librairie en tant que dépendance de votre projet (elle sera mise dans le répertoire ./node_modules).
npm install -save aurelia-framework
## Installer une librairie qui ne sera pas livrée avec votre projet (par exemple un framework de test) :
npm install --save-dev jasmine
Et voilà en prime le lien vers le site officiel de NPM :D
Un descriptif de quelques modules NodeJS très sympa
Un comparatif de performance entre différents serveur web expressifs du type Sparkjava (en java) et Sinatra (en Ruby). Pour rappel, un serveur web expression vous permet d'écrire ce genre de choses :
get("/mon/url", monAction);
post("/mon/url", monAction);
Avec "monAction" qui peut être au choix :
- une lambda
- une instance
- un pointeur sur fonction
En résumé, nous avons les résultats suivants sur un Retina Macbook Pro i7@2.7GHz and 16GB RAM :
-
Golang + bmizerany Pat + GOMAXPROCS(7):
51684 Requests/sec => 1550508 requests in 30s -
Sparkjava:
48631.24 Requests/sec => 1458768 requests in 30s
Average Latency 1.29ms -
Golang + bmizerany Pat:
42222 Requests/sec => 1266661 requests in 30s
Average Latency 1.52ms -
Golang + Gorilla Pat (using Gorillas Muxer)
37756 Requests/sec => 1132689 requests in 30s
Average Latency 1.71ms -
PyPy2.7 Python + Twisted:
12633 Requests/sec => 379001 requests in 30s -
Python + Flask:
11751 Requests/sec => 16393 requests in 30s
Average Latency 55.54ms -
Node + Express:
8962 Requests/sec => 268866 requests in 30s
Average Latency 7.14ms -
Python + Twisted:
3425 Requests/sec => 102781 requests in 30s
Ahhh, enfin un tuto par l'exemple pour se mettre à NodeJS. Et en français en plus. Merci aux développeurs et développeuses de Développez.com
Tuto de déploiement avec Travis CI