Etter 10 år er Express.js 5.0 endelig klar – slet med penger og utviklere

Versjon 5.0.0 av Express.js er endelig ute etter store forsinkelser. Nå ber Express-prosjektet om hjelp.

Express.js er fortsatt nye brukt, og nå er Express.js 5.0.0 ute. 📸: Ole Petter Baugerød Stokke
Express.js er fortsatt nye brukt, og nå er Express.js 5.0.0 ute. 📸: Ole Petter Baugerød Stokke Vis mer

Selv om rammeverket Express.js begynner å dra på årene, er det ifølge Stack Overflows utviklerundersøkelse fra 2024 fortsatt ett av de aller mest populære web-rammeverkene, like bak Next.js.

Det er fortsatt et populært valg for å raskt spinne opp en Node.js-basert web-server eller et API-endepunkt.

Teamet bak rammeverket Express.js har lansert Express.js 5.0.0, den første hovedversjonen som er lansert siden 2014, skriver DevClass.

Ber om hjelp

Selv om Express.js 5 ikke lenger er i beta, er den nye versjonen foreløpig ikke standardversjonen du får når du kjører npm install express. Og dokumentasjonen er bare i en tidlig betaversjon.

Derfor ber Express.js-teamet om hjelp fra flere bidragsytere til blant annet dokumentasjon og andre ting før versjon 5.0 blir en LTS-versjon (Long Term Support).

Det mangler blant annet en endelig migrasjonsguide fra versjon 4.x til 5.x, som er noe av det som må på plass før versjon 5 blir publisert til latest-taggen på npm.

Ny syntaks

Express.js 5 krever Node.js 18 eller høyere, og har en masse ny funksjonalitet du kan lese om her.

Blant de nye funksjonene er en ny syntaks for path route matching, altså hvordan du definerer ruting i appen din. Dette skal gi større fleksibilitet, men flere av disse endringene er "breaking changes" fra versjon 4.x. Som at du i noen tilfeller bruke RegExp.

De største endringene, slik de er beskrevet i den foreløpige migrasjonsguiden:

* Add new ?, *, and + parameter modifiers.
* Matching group expressions are only RegExp syntax.
* (*) is no longer valid and must be written as (.*), for example.
* Named matching groups no longer available by position in req.params.
* /:foo(.*) only captures as req.params.foo and not available as req.params[0].
* Regular expressions can only be used in a matching group.
* /\\d+ is no longer valid and must be written as /(\\d+).
* Special * path segment behavior removed.
* /foo/*/bar will match a literal * as the middle segment.

app.router er tilbake

Av andre endringer kan blant annet nevnes at hvis en promise kommer tilbake som "rejected", så vil Express.js 5 sende feilen videre til Express-middleware-en i stedet for å få applikasjonen til å krasje.

Et innebygget app.router-objekt som ble fjernet i Express.js 4 har nå også blitt lagt til igjen i Express 5.

– I den nye versjonen er dette objektet bare en referanse til den underliggende Express-ruteren, i motsetning til i versjon 3 hvor en app måtte eksplisitt laste den inn, står det i migrasjonsguiden.

Fryktet den aldri ville komme

Express.js er et prosjekt fra OpenJS Foundation, og ifølge DevClass har prosjektet lenge slitt med finansiering og med å få inn bidragsytere som vil jobbe på prosjektet.

Dette skal være grunnen til at det har tatt så lang tid å få ut versjon 5.

– Jeg frykter at Express ikke kommer til å lansere versjon 5. Det ser ut til at den er i "vedlikeholdsmodus" og er på vei til å bli "abandonware", sa en utvikler i 2023.

Doug Wilson i Express.js' tekniske komité svarte da at Express 5 i stor grad var ferdig – men det skulle altså ta ytterligere 18 måneder før den kom ut.