Wat is er nieuw in No­de 8?

De Javascript-run­ti­me heeft een up­da­te ge­kre­gen. Wat biedt de nieuwste ver­sie?

Web Designer Magazine - - Inhoud - Jem­mi­ma Knight Tech­ni­cal pro­ject ma­na­ger Ame­ri­can Ex­press

De Javascript-run­ti­me heeft een up­da­te ge­kre­gen. Wat biedt die nieuwste ver­sie??

No­de.js is nog steeds een van de po­pu­lair­ste ser­ver-si­de fra­me­works. Dat komt door­dat No­de.js licht­ge­wicht en ef­fi­ci­ënt is, Javascript over­al on­der­steunt en ook heel veel pack­a­ges on­der­steunt. Sinds No­de.js in 2009 ge­ïn­tro­du­ceerd werd, heeft het al een aan­tal gro­te re­lea­ses ge­had, waar­on­der de re­cen­te ver­sie 8.0. De­ze re­lea­se ver­scheen eind mei en krijgt in ok­to­ber de Lts-sta­tus (long-term sup­port, een sta­bie­le­re ver­sie voor be­drij­ven). Er is veel ver­be­terd in de­ze laat­ste re­lea­se, we noe­men de be­lang­rijk­ste ver­an­de­rin­gen.

No­de is ge­ba­seerd op Goog­les Chro­me V8 Javascript-en­gi­ne (V8 is de naam van de en­gi­ne, niet het ver­sie­num­mer!) en No­de 8.0 be­vat V8 5.8. Die heeft aan­zien­lijk ver­be­ter­de pres­ta­ties en API’S en zorgt er­voor dat No­de 8.0 com­pa­ti­bel is met toe­kom­sti­ge ver­sies van V8. Het team ach­ter No­de acht­te de­ze ver­be­te­rin­gen be­lang­rijk ge­noeg om met de lan­ce­ring van No­de 8.0 tot april te wach­ten om het fra­me­work be­ter op de Javascript-en­gi­ne te kun­nen af­stem­men.

Als je No­de ge­bruikt, ben je on­ge­twij­feld be­kend met npm. No­de 8.0 be­vat de laat­ste sta­bie­le ver­sie, npm 5.0.0. De­ze up­da­te voert veel­voor­ko­men­de ta­ken zo­als het in­stal­le­ren van pack­a­ges veel snel­ler uit dan zijn voor­gan­ger en heeft di­ver­se wij­zi­gin­gen on­der­gaan die de con­sis­ten­tie ver­be­te­ren en be­scha­di­gin­gen voor­ko­men. Dat be­te­kent dat npm nu be­trouw­baar­der en snel­ler werkt dan ooit. Als je tij­dens het in­stal­le­ren van mo­du­les wel eens ‘--sa­ve’ hebt ge­mist, vind je het vast fijn dat nieu­we in­stal­la­ties voort­aan stan­daard wor­den op­ge­sla­gen.

Een van de klei­ne­re wij­zi­gin­gen in No­de 8.0 is dat de buf­fers be­ter be­vei­ligd zijn. Bij vo­ri­ge ver­sies vul­de ‘new Buf­fer(num)’ de ge­heu­gen­ruim­te niet met nul­len. Dat werd voor de pres­ta­ties ge­daan, maar het be­te­ken­de wel dat er nog ge­voe­li­ge in­for­ma­tie in een nieu­we buf­fer kon staan, met al­le ge­vol­gen voor de vei­lig­heid van dien. Nu wordt een nieu­we buf­fer voort­aan au­to­ma­tisch met nul­len ge­vuld. Dat lijkt een sim­pel en klein iets, maar wel met ne­ga­tie­ve ge­vol­gen voor de snel­heid. Buf­fer(num) is so­wie­so ver­ou­derd en kun je daar­om be­ter niet meer ge­brui­ken.

De func­tie ‘util.pro­misi­fy()’ is een in­te­res­san­te en veel­be­lo­ven­de aan­vul­ling op de bi­bli­o­the­ken

De ex­pe­ri­men­te­le No­de.js API (N-API) ver­be­tert de on­der­steu­ning van na­ti­ve mo­du­les

van No­de 8.0. Het wordt al­ge­meen er­kend dat pro­mi­ses een ver­be­te­ring zijn ten op­zich­te van asyn­chro­ne Javascript-co­de op ba­sis van call­back­func­ties. Util.pro­misi­fy() is een mak­ke­lij­ke ma­nier voor het wrap­pen van call­back-func­ties die een pro­mi­se, een toe­kom­sti­ge waar­de of er­ror, op­le­ve­ren. Dat is met na­me han­dig voor co­de­ba­ses en bi­bli­o­the­ken met heel veel call­backs, waar­bij het re­fac­to­ren van co­de om pro­mi­ses te ge­brui­ken te las­tig en tijd­ro­vend zou zijn. Vroe­ger ge­bruik­te je daar Blue­bird.js of der­ge­lij­ke bi­bli­o­the­ken voor, maar dat is nu een kern­func­tie van No­de.

De toe­voe­ging van de key­words async en await is een an­de­re stap voor­waarts voor asyn­chro­ne co­de. Ei­gen­lijk zit­ten die sinds ver­sie 7.6.0 al in No­de, maar ver­sie 8.0 is de eer­ste ver­sie met de­ze key­words die LTS wordt en dus breed door bu­reaus en be­drij­ven ge­ac­cep­teerd zal wor­den. Async-func­ties bie­den een al­ter­na­tief voor call­backs en pro­mi­ses (en zijn in fei­te ge­ba­seerd op pro­mi­ses) en le­ve­ren een scho­ne­re syn­taxis op.

Aan No­de 8.0 is de ex­pe­ri­men­te­le No­de.js API (N-API) toe­ge­voegd om de on­der­steu­ning van na­ti­ve mo­du­les te ver­be­te­ren. Na­ti­ve mo­du­les zijn ge­schre­ven in C of C++ en wor­den in No­de.js ge­la­den als­of het re­gu­lie­re No­de-mo­du­les zijn. Die zijn han­dig waar pres­ta­ties kri­tisch zijn of voor het kop­pe­len van low-le­vel API’S of be­staan­de C- of C++bi­bli­o­the­ken. In het ver­le­den wa­ren die na­ti­ve mo­du­les moei­lijk te on­der­hou­den om­dat ze af­han­ke­lijk zijn van de on­der­lig­gen­de V8- en No­de-kern­in­ter­fa­ces waar­van de sta­bi­li­teit niet al­tijd ge­ga­ran­deerd kon wor­den. Daar­door moesten de na­ti­ve mo­du­les tel­kens ge­üp­da­tet wor­den wan­neer er een nieu­we ver­sie van No­de uit­kwam. NAPI biedt een aan­tal sta­bie­le, ab­strac­te in­ter­fa­ces die be­schik­baar zijn als C API’S en als on­der­deel van No­de zelf wor­den on­der­hou­den. Om­dat N-API nog ex­pe­ri­men­teel is, on­der­steunt het nog niet al­le fea­tu­res van V8. Dat zal in de toe­komst ech­ter ver­be­te­ren.

Naast de­ze nieu­we func­ties en een paar klei­ne­re heeft de nieu­we ver­sie wij­zi­gin­gen on­der­gaan die de sta­bi­li­teit ver­be­te­ren en bugs op­los­sen. Con­so­le.log() en an­de­re ver­ge­lijk­ba­re me­tho­den zijn nu bij­voor­beeld vei­li­ger dan bij eer­de­re ver­sies om­dat de si­tu­a­ties waar­in ze de ap­pli­ca­ties kon­den la­ten cras­hen zijn op­ge­lost. Het team ach­ter No­de is ook be­gon­nen met het toe­wij­zen van sta­ti­sche fout­co­des aan al­le fou­ten die No­de ge­ne­reert. Die kun je mak­ke­lijk in de do­cu­men­ta­tie op­zoe­ken en ver­an­de­ren niet – ook niet wan­neer de bij­ho­ren­de mel­ding wel an­ders wordt.

Na­tuur­lijk blijft de ont­wik­ke­ling van No­de.js. door­gaan. Er ver­schij­nen meest­al twee be­lang­rij­ke re­lea­ses per jaar. No­de 9.0 komt in ok­to­ber. Het No­de-team brengt al­leen ver­sies met een even num­mer uit als LTS en de vol­gen­de, No­de 10.0, is niet eer­der ge­pland dan ok­to­ber 2018. Wan­neer ver­sies een Lts-sta­tus heb­ben, wor­den ze acht­tien maan­den lang ac­tief on­der­steund. Daar­na krij­gen ze een on­der­houds­sta­tus die twaalf maan­den duurt en waar­in al­leen kri­ti­sche bugs en be­vei­li­gings­pro­ble­men ver­hol­pen wor­den. De ver­wach­ting is dat No­de.js 8.0 zo’n drie jaar mee zal gaan. Daar­door is het fra­me­work waar­schijn­lijk een net zo po­pu­lai­re als vei­li­ge keu­ze voor de na­bije toe­komst.

Newspapers in Dutch

Newspapers from Netherlands

© PressReader. All rights reserved.