Oktober er en bra måned for alle som har mye med Node.js å gjøre. Da lanseres nemlig både en ny hovedversjon av Node.js og en ny LTS-versjon . LTS står for Long Term Support, og er en stabil versjon som vedlikeholdes og supporteres i en lenger periode enn den "vanlige" versjonen.
Teamet bak Node.js lanserte tirsdag denne uken Node.js 21, som også betyr at Node 20 om kort til vil bli den aktive LTS-versjonen. Det melder blant andre DevClass.
Node.js 21 has been released! Exciting new updates: stable fetch and WebStreams, a built-in WebSocket client, and various test runner improvements. It will replace Node.js 20 which enters long-term support (LTS) later this month.
— Benny Code (@bennycode) October 18, 2023
OpenJS Foundation anbefaler at Node.js 21 brukes til tidlig testing av ny funksjonalitet, mens versjon 20 LTS brukes i produksjon. Det er for øvrig bare Node-versjoner med partall som blir promotert til LTS.
«Det forenkler utvikling med JavaScript som kjører både på front- og backend.»
Stabilt fetch-API
En av de største nyhetene i Node.js 21 er at fetch-API-et nå har fått status som stabilt ("stable"). Fetch brukes mye i moderne web-applikasjoner for asynkron henting av data, og utviklere har kunnet bruke det siden Node.js 18 uten å måtte importere noe. Tidligere måtte man importere for eksempel node-fetch eller løsninger som Axios.
Det er likevel først nå med Node.js 21 at det innebygde fetch-API-et i Node-kjernen har fått status som stabilt.
– Dette er en fortsettelse av arbeidet med å legge til Web-API-er i Node.js der det gir mening. Det forenkler utvikling med JavaScript som kjører både på front- og backend, skriver Red Hat i en bloggpost.
Ifølge DevClass er årsaken til at fetch ikke har blitt regnet som stabilt før nå at det avhenger av WebStreams – et API for håndtering av strømming av data ved å stykke opp data i små biter. WebStreams er nå også stabilt i versjon 21.
ESM og ny JavaScript-motor
I Node.js har man tradisjonelt brukt modulformatet CommonJS for å eksportere og importere JavaScript-moduler. Altså syntaksen der du bruker module.exports og require().
Det har imidlertid en stund vært mulig også i Node.js å bruke det nye ESM-formatet (EcmaScript modules), det nye modulformatet der du bruker import og export.
CommonJS er fortsatt standardformatet for moduler i Node.js, men fra Node.js 21 er det et nytt flagg, --experimental-default-type, som lar deg bruke ESM som standard modulformat. Med det flagget skrudd på, vil filer med endelser .js håndteres av Node som ESM, mens kun .cjs-filer vil være CommonJS.
I Node.js 21 er JavaScript-motoren oppgradert til versjon 11.8. Ellers nevner vi at det nå er eksperimentell støtte for WebSocket.
Du finner flere detaljer på Node.js-bloggen.