Alles, was Sie über den neuen Knoten wissen müssen. Js 8

Jan 19, 2026
wie man

Die jüngste große Version von Node.js bringt viele wesentliche Verbesserungen der JavaScript-Community, einschließlich einer aktualisierten JavaScript-Engine, NPM-Version 5, Google-V8, Node.js API, Async_Hooks, einem Whatwg-URL-Parser, sicherere Puffer und mehr. Hier aktualisieren wir Sie auf diesen Funktionen und den anderen wichtigsten Aspekten dieser Version.

Node.js 8 wird unter dem Code-Name Carbon veröffentlicht und ist jetzt von der verfügbar Node.js leite. . Es wird aktiv für weitere 18 Monate aktiv gearbeitet (keine neuen Funktionen, nur Fehlerbehebungen, Sicherheitsverbesserungen und NPM-Updates), bevor sie in den Wartungsmodus eingehen. Wie bei früheren Versionen werden während der Wartungsmodus-Versionen nur kritische Sicherheitsupdates und Fehlerbehebungen erhalten.

  • 20 JavaScript-Tools, um Ihren Geist zu blasen

Es ist sicher zu sagen, dass seit node.js in der Nähe eines der größten Updates ist, dass die Laufzeit jemals erhalten hat - es ändert sich, wie native Add-Ons geschrieben ist, und auch zusätzliche Sicherheits- und Leistungsverbesserungen.

Steigend hat Unternehmen dabei geholfen, mit Node.js seit vier Jahren mit Schulungen, Beratung oder Entwicklung erfolgreich zu sein. Einer der größten Kämpfe, die wir hatten, fügte, dass wir heimische Abhängigkeiten von Projekten hinzufügen.

Bevor node.js 8, wenn Anwendungen von den Modulen mit nativem Code abhängig waren, wann immer erhebliche neue Node.js-Versionen ankamen, mussten Sie als Antragsbetreuer Ihre Abhängigkeiten neu kompilieren. Wenn Sie Glück hatten, arbeiteten sie zunächst.

Dieser Prozess wurde mit den enormen Arbeitsmodulherstellern ermöglicht, die ihre Module inkompatiblen, inkompatible Node.js-Versionen erstellen, hauptsächlich mit Hilfe eines Moduls namens NAN (NODE.JS Native Abstraktionen).

Dieser Prozess ist weit weg von ideal, da viele Unternehmen ihre Abhängigkeiten nicht aktualisiert haben, wenn sie nicht kompiliert werden konnten, und es hat auch eine große zusätzliche Arbeitsbelastung auf Modulhersteller. Um dieses Problem zu lösen, wurde die Node.js-API (oder N-API) eingeführt.

01. Geben Sie die Node.js-API ein

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

Maschine Agnostic: Native Modules arbeiten jetzt mit Microsofts Chakra sowie unterschiedliche Node.js-Versionen zusammen

Die Node.js-API ist eine der wichtigsten Verbesserungen von Node.js 8. Es bringt eine definierte ABI-(Anwendungs-Binärschnittstelle) an node.js, um seine virtuelle Maschine agnostic zu machen. Dies bedeutet, dass native Module nicht nur mit verschiedenen Node.js-Versionen mithilfe von Google V8 JavaScript Engine funktionieren, sondern auch mit Microsoft-Chakra.

Im Moment ist die N-API in einem experimentellen Zustand, dh erhebliche Änderungen können sowohl der Implementierung als auch bei der API erfolgen. Mit diesem genannten, nativen Modulherstellern werden ermutigt, die neue Schnittstelle auszuprobieren und Feedback zu geben.

Wenn Sie ein Modulwarter sind, können Sie eine N-API-Version Ihres Moduls parallel zu Ihrer Hauptmodulversion freigeben. Dazu ist die offizielle Empfehlung, eine Version Ihres Moduls mit dem N-API-Tag bis NPM zu veröffentlichen.

Um eine N-API-Version zu veröffentlichen, müssen Sie:

  1. Veröffentlichen Sie die Nicht-N-API-Version als normal.
  2. Veröffentlichen Sie die N-API-Version:
  • Aktualisieren Sie die Version in der paket.json-Datei, indem Sie einen Bindestrich und die Napi-Tag. - Wenn Sie also 1.0.0 zuvor hatten, wird es 1.0.0-NAPI
  • Veröffentlichen Sie NPM mit NPM Publish --Tag n-api

Auf diese Weise stellen Sie sicher, dass die N-API-Version nicht zu der neuesten Version wird. Wenn also jemand Ihr Modul installiert, erhalten sie standardmäßig die Nicht-N-API-Version.

Garn, der von den Ingenieuren von Facebook erstellte Paketmanager wurde im Oktober 2016 veröffentlicht. Es versuchte, einige Mängel des offiziellen NPM-Clients anzusprechen, hauptsächlich durch einen leistungsfähigeren und deterministischen. Die meisten dieser Innovationen sind ebenfalls in NPM 5 enthalten.

02. Sag Hallo zu NPM 5

So wie Garn, NPM 5 einen Sperrmatch-Mechanismus eingeführt - wenn Sie eine neue Abhängigkeit von Ihrem Projekt installieren, wird es automatisch nicht nur nur hinzugefügt package.json. , aber eine neue Datei namens paket-lock.json. auch.

Sie können fragen, was der Unterschied zwischen ist paket-lock.json. und npm-schrumpwrap.json. , da NPM-Shrinkrap seit immer in NPM war? Lange Geschichte kurz, sie sind im Wesentlichen gleich, aber paket-lock.json. wird automatisch erstellt.

Ihr Ziel ist es, genau zu beschreiben, was Abhängigkeitsbaum NPM für Ihr Paket erstellen muss. Wenn Sie beide haben, NPM-Shr-Shrap. wird Vorrang nehmen. Basierend auf der Empfehlung von NPM sollten Sie verwenden npm-schrumpwrap.json. Wenn Sie es veröffentlichen möchten, verwenden Ihre Modulverbraucher es auch. Andererseits sollten Sie das paket-lock.json intern verwenden - sogar in Repositorys überprüft.

Verbesserungen an NPM 5 haben jedoch nicht mit dem Hinzufügen einer Sperrdatei angehalten - mit der neuen Version werden alle installierenden Module automatisch auch gespeichert, und sie werden beide hinzugefügt package.json. und paket-lock.json. Datei.

Die Art und Weise, wie NPM-Skripts-Arbeiten auch ein bisschen geändert hat. Vor allem laufen vorinstallierte Skripts jetzt vor allem alles, sodass sie das Node_Modules-Verzeichnis ändern können, bevor das CLI tatsächlich liest. Darüber hinaus wurden zwei neue Skripts hinzugefügt - vorbereitet und postpack. Sie führen beide auf NPM-Pack- und NPM-Veröffentlichen, jedoch nicht auf der NPM-Installation.

Im Herzen von Node.js ist das JavaScript-Engine, das Ihren JavaScript-Code interpretiert, Bytecode erstellt und lässt Ihre Bewerbung ausgeführt werden. Mit dem neuen Node.js 8 Release wurde dies auch aktualisiert.

03. JavaScript-Motor aktualisiert

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

Big News: Node.js kann den V8-Motor ohne große Version aktualisieren

Mit dem aktualisierten V8-Motor werden wesentliche Leistungsverbesserungen eingeführt - aber wichtiger ist es, dass es garantiert ist, dass die Binärschnittstelle eine weiterkompatible Anwendung anwendbar ist. Dies bedeutet, dass node.js den V8-Motor ohne eine große Node.js-Version aktualisieren können.

Dies ist von entscheidender Bedeutung, da die neueren Versionen des V8-Motors eine neue Compiler-Pipeline einführen, die weitere Leistungsverbesserungen an node.js einleitet. Dieses Update war so wichtig, dass es der Grund war, warum der ursprüngliche Node.js 8-Veröffentlichungsdatum verschoben wurde.

Die aktuelle Pipeline ist viel zu komplex, und die Einführung neuer Sprachmerkmale bedeutet normalerweise, dass mehrere Teile der Pipeline berührt werden. Mit der neuen Pipeline wird es viel einfacher.

Die Zündung, der neue Dolmetscher und Turbofan, der neue Optimierungscompiler, sind seit fast dreieinhalb Jahren in der Entwicklung. Sie sind die Grundlage, auf der neue Sprachfunktionen aufgebaut werden. Dazu gehören die Erfahrung, dass das V8-Team bei Google von der Messung der Real-Life-JavaScript-Anwendungen gesammelt wurde.

04. Willkommen Async Hooks

Um besser zu verstehen, welchen asynchronen Haken sind, nehmen wir einen Schritt zurück und greifen Sie zuerst mit fortlaufendem lokalen Speicher auf. Sie arbeiten wie Thread-Local-Speicher in der Gewindeprogrammierung, aber in Node.js verwendet es Rückrufe, um den Kontext weiterzugeben.

Stellen Sie sich vor, Sie schreiben eine Anwendung, die ein Produkt aus der Datenbank ablöst, und später möchten Sie es in Ihrer HTML-Antwort senden:

 COND-CREFENAMAMAVEFACE = ERFORDERLICH ('Continuation-Local-Lacer-Storage'). CreativeAmelStace
const Session = CreateAnameStace ('My-App-Session')
const db = erfordern ('./ db.js')
Funktion onrequest (Optionen, Weiter) {
  db.fetchuserById (Optionen.ID, Funktion (Fehler, Benutzer) {
    wenn (fehler) {
      Zurück Weiter (Fehler)
    }
    Session.Set ('Benutzer', Benutzer)
    Nächster()
  }) 

Wenn Sie später auf das Benutzerobjekt zugreifen möchten, müssen Sie sie nur aus dem lokalen Speicher ergreifen:

 Const-GetNameStace = erfordern ('Continuation-Local-Storage'). Gennamespace
const Session = Gennamespace ('meine Sitzung')
const Render = erfordern ('./ render.js')
Funktionsabschluss (Antwort) {
  const user = session.get ('user')
  Render ({Benutzer: Benutzer}). Pfeife (Antwort)
} 

Diese Technik wird ausführlich von Anwendungsleistungsüberwachungsanbietern verwendet, z. B. Trace von Risingstack, um den Ausführungskontext zu halten und Überwachungsinformationen aus Produktionssystemen zu sammeln.

Mit Async-Haken wird ein ähnliches Merkmal in den Kern des Knotens.js verschoben - es hilft, asynchrone Anfragen und Handler durch ihren Lebenszyklus zu verfolgen. Das async_hooks. Das Modul stellt eine API zur Verfügung, um Callbacks zu registrieren, die die Lebensdauer der in einer Node.js erstellten asynchronen Ressourcen verfolgen.

05. Verbesserte Versprechenunterstützung

Wenn Sie die Kernmodule in einer Anwendung verwenden möchten, die Versprechen verwenden möchten, mussten Sie die Kernmodule manuell einwickeln, damit sie dieselbe Weise verwenden konnten. Es sah so etwas aus:

 const fs = erfordern ('fs')
Funktion ReadFilepromise (... args) {
  Senden Sie neues Versprechen zurück ((beheben, lehnen) = & gt; {
    fs.ReadFile (... args, (ERR, Ergebnis) = & gt; {
      Wenn (ERR) {
        Zurücksetzen (ERR)
      }
      Resolve (Ergebnis)
    })
  })
}
ReadFilepromise ('./ paket.json', 'utf-8')
  . Dann ((res) = & gt; console.log (res))
  .Catch ((ERR) = & gt; console.log (ERR) 

Mit Knoten.js 8 wird dem UVW-Kernmodul ein neues Helfer-Verfahren hinzugefügt. Es ermöglicht den Standard-Callback-Stil von NODE Node.js, der in einer Funktion verpackt wird, die Versprechen zurückgibt.

Mit dieser Funktion wird das obige Snippet vereinfacht und wird dazu:

 const fs = erfordern ('fs')
const PROVISIFY = erfordern ('util'). Versprechen Sie
ReadFilepromise = PROVISIFY (FS.ReadFile)
ReadFilepromise ('./ paket.json', 'utf-8')
  . Dann ((res) = & gt; console.log (res))
  .Catch ((ERR) = & gt; console.log (ERR) 

06. Sichere Puffer

Vor node.js Version 8 haben Puffer, die mit dem neuen Puffer-Konstruktor (NUMBER) zugewiesen wurden, den Speicherplatz nicht mit Nullen initialisieren. Infolgedessen könnten neue Pufferinstanzen vertrauliche Informationen enthalten, was zu schwerwiegenden Sicherheitsproblemen führt - selbst beliebte Module wie Mungo, WS oder das Anforderungsmodul waren betroffen.

Aber wie kommen wir dort hin? Wenn JavaScript vom Browser auf die Serverseite verschoben wurde, war eine schnelle und einfache Datenverarbeitung erforderlich - so wurde die Pufferklasse hinzugefügt. Puffer ist ein veränderliches Array von binären Daten. Wenn Sie mit dem Konstruktor verwendet werden, der nach der Größe des neuen Puffers fragt, reserviert es einfach den Speicherplatz reserviert, jedoch nicht gereinigt.

Da Ihr Server mehrere Benutzer gleichzeitig dienen kann (im Gegensatz zu Ihrem Browser), ist es möglich, dass der frisch zugewiesene Speicherplatz vertrauliche Informationen von anderen Benutzern enthält (sogar Kennwörter!) Und können möglicherweise einem Angreifer ausgesetzt sein.

Es war zwar eine absichtliche Entscheidung, die Leistung der neuen Puffererzeugung zu steigern, für die meisten von uns war es nicht der beabsichtigte Gebrauch - selbst wenn es dokumentiert wurde. Aus diesem Grund wird beginnend mit Knoten.js 8, die mit neuen Puffer (Nummer) oder Puffer (Nummer) zugewiesen sind, automatisch mit Nullen gefüllt.

07. Änderungen des Debugging

Vor dem Knoten. index.js. Mit Node.js 8 wird dies entfernt und durch Knoten-Inspector ersetzt. Sie können den CLI-Debugger weiterhin verwenden, jedoch wird es in Kürze entfernt.

Von nun an sollten Sie den Knoten verwenden --Inspect Index.js. oder Knoten --Inspect-BRK Index.js Wenn Sie möchten, dass der Debugger einen Haltepunkt in die erste Zeile der Anwendung einfügt. Sobald Sie es ausgeführt haben, erhalten Sie einen WebSocket-Link, den Google Chrome zum Anschluss des Debuggers verwenden kann.

Sie sollten zu gehen Chrome: // inspizieren In Ihrem Chrome-Browser, und er erkennt automatisch die Anwendung von laufendknoten.js, sodass Sie eine Verbindung herstellen können. Nachdem Sie mit Ihrem Prozess verbunden sind, erhalten Sie den Debugger von Chrome, um Ihren laufenden Node.js-Antrag zu inspizieren.

08. Einführung statischer Fehlercodes

Wenn Sie zuvor einen Fehler aufsuchen möchten, den Sie in der Laufzeit erhalten haben und entsprechend handeln möchten, mussten Sie in den meisten Fällen die Fehlermeldung überprüfen. Dies war fehleranfällig, da Fehlermeldungen mit neuen Node.js-Versionen geändert haben.

Mit Node.js 8 wurden den meisten Fehlern statische Fehlercodes zugewiesen - es ist immer noch ein Arbeitsaufwand, aber sobald sie fertig ist, ändern sich diese Fehlercodes nicht, auch wenn die Nachricht im Fehlermeldung tut .

Zum Beispiel der neu eingeführte Whatwg URL-API. wird ein werfen Err_invalid_url. Fehler im folgenden Snippet, da der Parameter keine gültige URL ist:

 const-URL = erfordern ('URL'). URL
const MyURL = neue URL ('/ foo') 

Wie Sie sehen, hat die Version des Node.js 8-Updates viele neue und aufregende Verbesserungen der JavaScript-Community mitgebracht. Um mit all diesen neuen Funktionen selbst zu experimentieren, gehen Sie zu nodejs.org. , Laden Sie den Knoten.js 8 Binary herunter und spiele mit deinem neuen Toolset!

Dieser Artikel erschien ursprünglich in Netzmagazin. Ausgabe 296. Kaufen Sie es hier. .

Zum Thema passende Artikel:

  • 20 Node.js-Module, die Sie kennen müssen
  • 30 Chrome-Erweiterungen für Webdesigner und Devs
  • 3 Top-Wege, um einen Website-Prototyp aufzubauen

wie man - Die beliebtesten Artikel

6 Schnellspitzen zur Verbesserung Ihrer Bürstenstiftzeichnung

wie man Jan 19, 2026

(Bild Kredit: artem solop) Ich habe immer bemüht, meinen persönlichen Stil zu entwickeln, eine künstlerische Stimm..


Bauen Sie Gelände in Houdini 17

wie man Jan 19, 2026

In Houdini 17 führte SideFX einige neue Instrumente ein und verbesserte andere, um die Möglichkeiten der Künstlerkünstler zu ..


Erstellen Sie spezielle Druckvorgänge in InDesign

wie man Jan 19, 2026

Seite 1 von 4: Folienblockierung. Folienblockierung. ..


So erstellen Sie eine photorealistische Raumszene

wie man Jan 19, 2026

Möchten Sie wissen, wie man eine realistische 3D-Architekturfliege erstellt, ist aber nicht sicher, wo Sie Ihre Bemühungen in d..


Wie man digital in ZbrushCore digital skulpt

wie man Jan 19, 2026

ZbrushCore ($ 149.95 für eine einzige Benutzerlizenz) ist eine vereinfachte Version von Zbrush das di..


So wählen Sie das richtige Prototyping-Tool

wie man Jan 19, 2026

Prototyp entwickeln ist vielleicht einer der wichtigsten Teile des Web-Design-Prozesses. Mit dem Bau A. Websi..


Machen Sie ein animiertes GIF in Photoshop

wie man Jan 19, 2026

Adobe lanciert heute eine neue Serie von Video-Tutorials, die heutzutage aufgerufen wird Kreative Wolke Anwendungen in 60 Sekunden oder weniger. Egal, ob Sie ein..


So erstellen Sie ein stilisiertes 3D-Zeichen für Spiele

wie man Jan 19, 2026

Dies 3D Art. Das Tutorial konzentriert sich auf die Schaffung eines halbstilisierten Avatars in Iclone-Charakter-E..


Kategorien