Node vs Deno
Quelques notes sur la prise en main de Deno, nouveau runtime javascript créé par le gars qui a fait Node et l'adaptation d'applications à son usage.
Installation
L'installation de Deno est extrêmement simple :
- Télécharger une version de Deno.
- Installer l'exécutable dans
~/.local/bin
.
Comparaisons
Pas de Deno sur Raspi
Deno Ne tourne pas sur raspberry Pi, contrairement à Node. C'est bien dommage
Module chargé en ligne de commande ou par import
Sous Node, on peut savoir si un module est chargé en ligne de commande ou par un import :
const argv = (await import('node:process')).argv;
const [, executed] = argv;
const url = new globalThis.URL(import.meta.url);
console.log(`executed: ${executed}`);
console.log(`current : ${url.pathname}`);
if (executed === url.pathname) {
console.log('Loaded from cli');
} else {
console.log('Loaded from import');
}
L'équivalent Deno de argv
, Deno.args
, ne contient pas les 2 premières entrées fournies par Node, à savoir le chemin de l'exécutable et celui du script exécuté.
Mais Deno
offre la variable mainModule
qui est le chemin du module entrée en ligne de commande. Le test pourrait donc ressembler à ceci :
let executed;
if (typeof Deno === 'object') {
executed = new globalThis.URL(Deno.mainModule).pathname;
} else {
[, executed] = (await import('node:process')).argv;
}
const url = new globalThis.URL(import.meta.url);
console.log(`executed: ${executed}`);
console.log(`current : ${url.pathname}`);
if (executed === url.pathname) {
console.log('Loaded from cli');
} else {
console.log('Loaded from import');
}