Alles wat u moet weten over het nieuwe Node.JS 8

Sep 14, 2025
Procedures

De nieuwste grote release van Node.js brengt veel belangrijke verbeteringen aan de JavaScript-community, waaronder een bijgewerkte Javascript-engine, NPM-versie 5, Google's V8, NODE.JS API, ASYNC_Hooks, een WhatWG URL Parser, veiliger buffers en meer. Hier zullen we u bijwerken op deze functies en de andere belangrijkste aspecten van deze release.

Node.js 8 wordt vrijgegeven onder de Codenaam Carbon en is nu verkrijgbaar bij de Node.js site ​Er wordt actief gewerkt voor nog eens 18 maanden (geen nieuwe functies, alleen bugfixes, beveiligingsverbeteringen en NPM-updates), voordat u naar de onderhoudsmodus gaat. Net als bij vorige releases, krijgt releases tijdens onderhoudsmodus alleen kritische beveiligingsupdates en bugfixes.

  • 20 JavaScript-tools om je geest te blazen

Het is veilig om te zeggen dat sinds Node.js bestaat, dit is een van de grootste updates die de runtime ooit heeft ontvangen - het verandert hoe inheemse add-ons zijn geschreven en brengt ook extra veiligheids- en prestatieverbeteringen.

Rijzende Heeft bedrijven geholpen om te slagen met Node.js voor vier jaar met training, consulting of ontwikkeling. Een van de grootste strijd die we hadden, voegde inheemse afhankelijkheden toe aan projecten.

Vóór Node.js 8, als applicaties afhankelijk waren van modules met inheemse code, wanneer grote nieuwe Node.js-versies arriveerden, als een applicatiebeheerder moest je je afhankelijkheden opnieuw compileren. Als je geluk had, werkten ze in het begin.

Dit proces werd mogelijk gemaakt met de enorme werkmodule-onderhouders die zijn ingevoerd om hun modules te laten werken door incompatibele knooppunt-versies, meestal met behulp van een module genaamd NAN (NODE.JS Native Abstractions).

Dit proces is verre van ideaal, omdat veel bedrijven hun afhankelijkheden niet hebben bijgewerkt als ze niet konden worden gecompileerd en het ook een enorme extra werklast op module-beheerders plaatsen. Om dit probleem op te lossen, werd de Node.js API (of N-API) geïntroduceerd.

01. Voer het NODE.JS API in

Machine agnostic: Native modules now work with Microsoft’s Chakra as well as different Node.js versions

Machine Agnostic: Native-modules werken nu met Microsoft's chakra evenals verschillende knooppunt.

De Node.js API is een van de belangrijkste verbeteringen van Node.js 8. Het brengt een goed gedefinieerde ABI (applicatie-binaire interface) op Node.js om zijn virtuele machine agnostic te maken. Dit betekent dat inheemse modules niet alleen met verschillende Node.js-versies werken met behulp van de V8 Javascript-engine van Google, maar ook met Microsoft's Chakra.

Voorlopig is de N-API in een experimentele toestand, wat betekent dat er belangrijke veranderingen kunnen gebeuren met zowel de implementatie als de API. Met dit gezegd, worden inheemse modulebeheerders aangemoedigd om de nieuwe interface uit te proberen en feedback te geven.

Als u een module-beheerder bent, kunt u een N-API-versie van uw module parallel met uw hoofdmodule-versie vrijgeven. Om dit te doen, is de officiële aanbeveling om een ​​versie van uw module te publiceren met de N-API-tag aan NPM.

Om een ​​N-API-versie te publiceren, moet u:

  1. Publiceer de niet-N-API-versie zoals normaal.
  2. Publiceer de N-API-versie:
  • Werk de versie in het pakket.json-bestand bij door een dashboard toe te voegen en de NAPI-tag - Dus als u eerder 1,0.0 had, wordt het 1.0.0-NAPI
  • Publiceren naar NPM met behulp van NPM Publish --Tag N-API

Op deze manier zorg je ervoor dat de N-API-versie de nieuwste release niet wordt, dus als iemand je module installeert, krijgen ze standaard de niet-N-API-versie.

Garen, de pakketbeheerder gemaakt door de ingenieurs van Facebook, werd in oktober 2016 uitgebracht. Het probeerde enkele tekortkomingen van de officiële NPM-cliënt aan te pakken, meestal door meer performant en deterministisch te worden. De meeste van deze innovaties zijn ook te zien in NPM 5.

02. Zeg hallo tegen NPM 5

Net als garen introduceerde NPM 5 een lock-bestandsmechanisme - wanneer u een nieuwe afhankelijkheid van uw project installeert, wordt deze automatisch niet alleen toegevoegd pakket , maar een nieuw bestand genaamd pakket-lock.json ook.

U kunt vragen waar het verschil tussen is pakket-lock.json en npm-shrinkwrap.json , omdat NPM-Shrinkwrap sinds eeuwig in NPM is geweest? Lang verhaal kort, ze zijn in wezen hetzelfde, maar pakket-lock.json wordt automatisch gemaakt.

Hun doel is om precies te beschrijven welke afhankelijkheidsboom NPM moet maken voor uw pakket. Als je allebei hebt, npm-shrinkwrap zal voorrang hebben. Op basis van de aanbeveling van NPM moet u gebruiken npm-shrinkwrap.json Als u het wilt publiceren, zodat uw moduleconsumenten het ook zullen gebruiken. Aan de andere kant zou u het pakket-lock.json intern moeten gebruiken - zelfs gecontroleerd in repositories.

Maar verbeteringen aan NPM 5 zijn niet gestopt met het toevoegen van een slotbestand - met de nieuwe versie worden alle modules die u installeert, ook automatisch opgeslagen, en ze worden beide aan uw pakket en pakket-lock.json het dossier.

De manier waarop NPM-scripts werken, is ook een beetje veranderd. Allereerst rennen vooraf geïnstalleerde scripts vóór al het andere, zodat ze de map Node_modules kunnen wijzigen voordat de CLI het daadwerkelijk leest. Daarnaast zijn er twee nieuwe scripts toegevoegd - voorverpak en postpack. Ze runnen ook op NPM Pack en NPM Publish, maar niet op NPM-installatie.

In het hart van Node.Js is de JavaScript-engine die uw JavaScript-code interpreteert, bytecode hieruit maakt en laat uw aanvraag worden uitgevoerd. Met de nieuwe Node.js 8-release is dit ook bijgewerkt.

03. Bijgewerkte JavaScript-motor

Big news: Node.js will be able to update the V8 engine without a major release

Big News: Node.js kan de V8-motor bijwerken zonder een grote release

Met de bijgewerkte V8-motor worden grote prestatieverbeteringen geïntroduceerd - maar nog belangrijker, het is gegarandeerd een voorwaartse compatibele applicatie-binaire interface. Dit betekent dat Node.js de V8-motor kan bijwerken zonder een grote knooppunt.

Dit is cruciaal, omdat de nieuwere versies van de V8-motor een nieuwe compiler-pijplijn zullen introduceren, die verdere prestatieverbeteringen introduceert in Node.js. Deze update was zo belangrijk dat het de reden was dat de oorspronkelijke Node.js 8-releasedatum werd uitgesteld.

De huidige pijplijn is veel te complex en het introduceren van nieuwe taalfuncties betekent meestal dat meerdere delen van de pijplijn aanraakt. Met de nieuwe pijplijn wordt het een stuk eenvoudiger.

Ontsteking, de nieuwe tolk en turbofan, de nieuwe optimalisatiecompiler, zijn bijna drie en een half jaar in ontwikkeling geweest. Ze zijn de basis waarop nieuwe taalfuncties worden gebouwd. Ze omvatten de ervaring die het V8-team bij Google is verzameld bij het meten van JavaScript-toepassingen van het echte leven.

04. Welkom Async Hooks

Om beter te begrijpen wat async-haken zijn, laten we een stapje terugnemen en eerst grepen met voortzetting-lokale opslag. Ze werken zoals draad-lokale opslag in schroefdraadprogrammering, maar in Node.js gebruikt het callbacks om de context door te geven.

Stel je voor dat je een applicatie schrijft die een product uit de database opheft, dan wil je het later in je HTML-reactie sturen:

 Constenamespace = vereisen ('continuation-local-opslag'). Contecenamespace
const session = createnamespace ('my-app-sessie')
const db = vereist ('./ db.js')
Functie OnRequest (opties, volgende) {
  db.fetchuserbyid (opties.id, functie (fout, gebruiker) {
    if (fout) {
      RETURN VOLGENDE (FOUT)
    ​
    session.set ('gebruiker', gebruiker)
    De volgende()
  }) 

Later, als u toegang wilt tot het gebruikerobject, moet u het allemaal van de lokale opslag vastpakken:

 Constamespace = vereisen ('continuatie-local-opslag'). Getamespace
const sessie = getamespace ('mijn sessie')
const renderen = vereisen ('./ render.js')
Functie-afwerking (reactie) {
  const gebruiker = session.get ('gebruiker')
  Render ({Gebruiker: Gebruiker}). Pijp (reactie)
} 

Deze techniek wordt uitgebreid gebruikt door aanbieders van toepassingsprestaties, zoals Trace door RisingStack, om de uitvoeringscontext te houden en het verzamelen van monitoringinformatie van productiesystemen.

Met async-haken wordt een vergelijkbare functie verplaatst naar de kern van de knooppunt - het helpt bij het volgen van asynchrone verzoeken en handlers via hun levenscyclus. De async_hooks Module biedt een API om callbacks te registreren die de levensduur van asynchrone middelen die in een Node.js-toepassing zijn gecreëerd.

05. Verbeterde belofte-ondersteuning

Vóór Node.JS 8, als u de kernmodules in een toepassing wilt gebruiken die beloften gebruikt, moest u de kernmodules handmatig inpakken, zodat ze op dezelfde manier kunnen worden gebruikt. Het zag er zoiets uit:

const fs = vereisen ('fs')
FUNCTIE LEADFILEPROMISE (... AGS) {
  Nieuwe belofte retourneren ((besluit, weigeren) = & GT; {
    fs.readfile (... args, (err, resultaat) = & gt; {
      if (err) {
        Return Resolve (Err)
      ​
      oplossen (resultaat)
    ​
  ​
​
leesfilepromise ('./ Package.json', 'UTF-8')
  .Ten ((res) = & gt; console.log (res))
  .catch ((err) = & gt; console.log (err)) 

Met Node.JS 8 wordt een nieuwe helpermethode toegevoegd aan de UTIL-kernmodule, Util.Promisify. Het staat standaard Node.js Callback-Style API's in staat om te worden ingepakt in een functie die beloften retourneert.

Met behulp van deze functie wordt het bovenstaande fragment vereenvoudigd en wordt dit:

 Const fs = vereisen ('FS')
const promisify = vereisen ('util'). Promisify
leesfilepromise = promisify (fs.readfile)
leesfilepromise ('./ Package.json', 'UTF-8')
  .Ten ((res) = & gt; console.log (res))
  .catch ((err) = & gt; console.log (err)) 

06. Beveiliger buffers

Vóór Node.js versie 8 hebben buffers toegewezen met behulp van de nieuwe buffer (nummer) constructeur niet initialiseer de geheugenruimte met nullen. Dientengevolge kunnen nieuwe bufferinstanties gevoelige informatie bevatten, wat leidt tot ernstige beveiligingsproblemen - zelfs populaire modules zoals mangoest, WS of de verzoekmodule werden beïnvloed.

Maar hoe zijn we er gekomen? Wanneer JavaScript is verplaatst van de browser naar de serverzijde, was er behoefte aan snelle en eenvoudige gegevensverwerking - dus de bufferclass is toegevoegd. BUFFER IS EEN GEBRUIK VAN BINARE GEGEVENS. Bij gebruik met de constructor die om de grootte van de nieuwe buffer vraagt, heeft het de geheugenruimte gereserveerd, maar heeft het niet schoongemaakt.

Aangezien uw server tegelijkertijd meerdere gebruikers kan bedienen (in tegenstelling tot uw browser), is het mogelijk dat de vers toegekende geheugenruimte gevoelige informatie bevat van andere gebruikers (zelfs wachtwoorden!), En kan mogelijk worden blootgesteld aan een aanvaller.

Hoewel het een opzettelijke beslissing was om de prestaties van de nieuwe buffercreatie te stimuleren, was het voor de meesten van ons niet het beoogde gebruik - zelfs als het gedocumenteerd was. Hierdoor worden buffers toegewezen met Node.js 8, met behulp van nieuwe buffer (nummer) of buffer (nummer) automatisch gevuld met nullen.

07. Veranderingen in debugging

Vóór Node.js 8, als je je Node.js-applicaties wilde debuggen, was een van de gemakkelijkste oplossingen om de ingebouwde debugger te starten, met behulp van knooppunt debug index.js. Met Node.JS 8 wordt dit verwijderd en vervangen door knooppunt-inspecteur. U kunt de CLI-debugger nog steeds gebruiken, maar het wordt kort verwijderd.

Vanaf nu moet u knooppunt gebruiken --Inspect-index.js , of knooppunt --Inspect-BRK-index.js Als u wilt dat de debugger een breekpunt op de eerste regel van de toepassing plaatst. Nadat u het hebt uitgevoerd, ontvangt u een WebSocket Link dat Google Chrome kan gebruiken om zijn debugger aan te sluiten.

Je moet naar boven gaan naar Chrome: // Inspecteer In uw Chrome-browser herkent het automatisch de toepassing van het lopende Node.js, zodat u verbinding kunt maken. Nadat u op uw proces hebt aangesloten, krijgt u de foutopsporing van Chrome om uw draaiende node.js-applicatie te inspecteren.

08. Introductie van statische foutcodes

Eerder, als je een fout wilde controleren die je in runtime hebt ontvangen en dienovereenkomstig handelen, moest je in de meeste gevallen het foutbericht controleren. Dit was foutgevoelig, omdat er foutenmeldingen mogelijk zijn gewijzigd met nieuwe Node.js-versies.

Met Node.JS 8 zijn statische foutcodes toegewezen aan de meeste fouten - het is nog steeds een werk in de voortgang, maar zodra het is voltooid, zullen deze foutcodes niet veranderen, zelfs als het bericht in de fout doet .

Bijvoorbeeld de nieuw geïntroduceerde Whatwg URL API zal een Err_invalid_url Fout in het volgende fragment, omdat de parameter geen geldige URL is:

 Const-URL = vereisen ('URL'). URL
const myurl = nieuwe URL ('/ foo') 

Zoals je kunt zien, heeft de release van de Node.js 8-update veel nieuwe en opwindende verbeteringen aan de JavaScript-gemeenschap gebracht. Om te beginnen met experimenteren met al deze nieuwe functies, ga dan naar boven nodejs.org , Download het node.js 8 binair en begin met spelen met je nieuwe toolset!

Dit artikel verscheen oorspronkelijk in netto tijdschrift uitgave 296. Koop het hier

Gerelateerde artikelen:

  • 20 NODE.JS-modules die u moet weten
  • 30 chroomextensies voor webontwerpers en devs
  • 3 topmanieken om een ​​website-prototype te bouwen

Procedures - Meest populaire artikelen

Hoe een blogsite te bouwen met Gatsby

Procedures Sep 14, 2025

Frameworks zoals reageer alleen Javascript naar klanten, die vervolgens wordt gebruikt om het elementen op het scherm te maken. D..


5 Hot New CSS-functies en hoe ze ze gebruiken

Procedures Sep 14, 2025

Pagina 1 van 2: Ontdek 5 nieuwe CSS-functies: Stappen 01-10 Ontdek 5 nieu..


Drie stappen naar een mousserende nachtelijke hemel in aquarel

Procedures Sep 14, 2025

Aquarel is een ongelooflijk medium dat, met het recht Kunsttechnieken kan worden gebruikt om de meest magische en ..


Maak een betere personage-animaties in Maya

Procedures Sep 14, 2025

Mierenafdeling wordt een van onze artiesten die uw specifieke vragen beantwoorden Vertex ..


5 tips om uw VR-creaties te verbeteren

Procedures Sep 14, 2025

Vertex workshopleider Glen Southern deelt zijn toptips om u te helpen uw VR-beeldhouwen t..


Hoe een stadsgezicht te schilderen met kleuren blokken

Procedures Sep 14, 2025

Adembenemende uitzichten, prachtige skylines en prachtige stadsgezichten maken geweldige foto's, maar kunnen nogal ontmoedigend z..


Creëer schilderseffecten in Photoshop CC

Procedures Sep 14, 2025

Adobe heeft twee nieuwe video-tutorials uitgebracht om u te helpen uw Photoshop te nemen Creatieve wolk Vaardighed..


Maak perfecte berichten in alle e-mailclients

Procedures Sep 14, 2025

Voor elke e-mailmarketingcampagne om te werken, moet de e-mail de inbox bereiken en onderscheiden van de alle anderen. Het verhaal eindigt echter niet. Uw e-mail moet goed maken als u wilt da..


Categorieën