JavaScript¶
Quelques notes¶
- JavaScript est une marque déposée.
- ECMAScript est le nom utilisé pour la standardisation du langage.
- TypeScript est une surcouche permettant de typer les variables.
- TypeScript s'accompagne d'un transpilateur (tsc)
- L'utilisation d'un bundler évitera toutefois des problèmes... (voir TypeScript et NodeJS - La blague de la gestion des extensions...)
- Constat : D'autres langages ont évolués pour rendre le typage optionnels PHP - Type declarations, Python - typing...
NodeJS¶
Pour installer NodeJS, voir :
- nodejs.org - Download Node.js
- https://github.com/mborne/mborne.github.io/blob/main/docs/outils/js/install-nodejs.sh qui assure l'installation de NodeJS pour Ubuntu et Debian :
curl -sS https://mborne.github.io/outils/js/install-nodejs.sh | bash
winget install -e --id OpenJS.NodeJS.LTS
Gestion de dépendances¶
- npm assure le téléchargement des dépendances et l'exécution des scripts définis dans le fichier
package.json. - yarn est une alternative possible à npm
- www.npmjs.com est le principal dépôt public.
- npm-check-updates facilite la mise à jour des dépendances :
# Pour identifier les mises à jour possibles
npx npm-check-updates
# Pour mettre à jour les dépendances sans modifier la version majeure :
npx npm-check-updates -u -t minor
Bundlers¶
# Pour un projet React+TypeScript
npm create vite@latest demo-vite-ts -- --template react-ts
cd demo-vite-ts
npm run dev
Création d'API WEB¶
- express est un framework de développement d'application et d'API en javascript.
- express-validator donne un cadre pour la validation des paramètres.
- NestJS et Fastify comptent parmi les alternatives possibles à NextJS (Voir Top 10 Express.js Alternatives)
- socket.io simplifie l'implémentation de WebSocket en JS.
Création d'API CLI¶
- commander simplifie la gestion des paramètres passés en ligne de commande et la mise en oeuvre d'un
--help.
Frameworks¶
Tests unitaires et fonctionnels¶
- Mocha pour l'exécution des tests unitaires + Chai supportant différents styles d'assertions (should, expect et assert)
- Jest est une alternative qui inclue les assertions.
- ts-jest assure la transpilation pour TypeScript et ES6
- supertest permet de tester un service HTTP
Cartographie WEB¶
- leaflet est une bibliothèque de cartographie web simple d'utilisation.
- OpenLayers est une bibliothèque de cartographie web disposant de fonctionnalités avancées.
- ol-ext propose un ensemble d'extensions pour OpenLayers.
Manipulation de données géographiques¶
- proj4js permet de transformer des coordonnées géographiques
- https://epsg.io/2154.js permet de récupérer la définition de Lambert93 pour cette bibliothèque.
- Voir aussi spatialreference.org qui est une alternative à epsg.io
- jsts est portage en JavaScript de la bibliotheque java JTS (portée en C++ sous le nom GEOS pour PostGIS) permettant d'effectuer des calculs géométriques tels des calculs de zones tampons.
- turfjs permet elle aussi de réaliser de calculs géométriques avec des données GeoJSON et des coordonnées en longitude et latitude.
- mapshaper est un utilitaire proposant entre autre des fonctionnalités de simplification géométrique conservant la topologie à l'échelle d'une couche.
- topojson-simplify est lui aussi un utilitaire de simplification des géométries conservant la topologie.
- node-gdal est un binding NodeJS de la bibliothèque GDAL supportant de nombreux formats vecteurs et images.
Rendu 3D¶
- threejs est une bibliothèque de visualisation 3D généraliste s'appuyant sur WebGL.
- KhronosGroup/glTF-Blender-IO permet d'exporter des modèles blender pour ThreeJS.
- cesiumjs permet l'affichage d'un globe 3D.
- iTowns permet l'affichage sur un globe 3D ou en vue immersive.
Markdown¶
- marked.js pour la conversion de markdown en HTML.
- marpit pour la convertion de markdown en présentation HTML.
- remarkjs pour la convertion de markdown en présentation HTML.
Recherche full-text¶
LLM¶
- langchain-js: Framework pour le développement d'application s'appuyant sur des grands modèles de langage (LLMs) avec appel d'outil, RAG, mémoire des conversations,...
Divers¶
- ejs est un moteur de template.
- tinymce offre un éditeur WYSIWYG pour du contenu HTML.
- json-editor permet la génération de formulaire d'édition HTML pour l'édition de données en fonction d'un schéma JSON.
- axios est client HTTP en JS offrant des résultats sous forme de Promise (voir blog.logrocket.com - Axios vs. Fetch (2025 update): Which should you use for HTTP requests?)
Expérimentations¶
- mborne/crash-test : Une application pour illustrer les redémarrages automatiques en cas de crash et les limites CPU/RAM avec Docker / Kubernetes.
- mborne/math-city : Un mini-jeu pour apprendre les tables (développé pour prendre en main React plutôt que faire réciter des tables de multiplication).
- mborne/markdown-to-html : Mon propre convertisseur de markdown en HTML puisqu'il n'y a pas assez de générateurs de sites statiques sur le marché 😉
- mborne/ts-examples illustre la configuration des outils autour de TypeScript (ts-node, mocha, chai, nyc).
Les dépôts suivants doivent être archivés. Ils étaient utilisés par mborne/postgis-integration avant le portage en Python :
- mborne/node-dl qui encapsule des appels à wget pour le téléchargement des données.
- mborne/node-extract qui appelle l'exécutable adapté (tar, unzip,...) pour décompresser les archives.
- mborne/node-ogr2pg qui exécute des commandes ogr2ogr pour charger différents formats dans PostgreSQL/PostGIS.
- mborne/node-postgis-helper qui est une tentative d'aller un plus plus loin avec une gestion des métadonnées sur les sources et une exploration des schémas en vue de générer des API.
Ressources¶
Les bases :
- www.w3schools.com - JavaScript Tutorial pour découvrir progressivement la syntaxe et les concepts.
- www.w3schools.com - JavaScript Versions pour suivre les évolutions, par ex :
- www.w3schools.com - JavaScript and HTML DOM Reference
NodeJS et npm :
- nodejs.org - api : Documentation de référence de NodeJS
- www.npmjs.com - Bibliothèque JavaScript populaires : Bibliothèque JavaScript populaires
Deno (alternative à NodeJS) :