Was ist neu in Node.js 10?

Node.js ermöglichte es JavaScript tapfer, an Orte zu gelangen, an denen die Ersteller die Sprache nie beabsichtigt hatten. Viele beliebte Funktionen, die in neuen ECMAScript-Revisionen zu sehen waren, begannen als Funktionen, die zu Node.js hinzugefügt wurden. Leider waren die standardisierten APIs häufig nicht mit denen kompatibel, die vom Node.js-Entwicklerteam entwickelt wurden.

Daher dreht sich eines der wiederkehrenden Themen der Node.js-Welt darum, Unterschiede zwischen 'Webentwicklung' und 'Knotenentwicklung' in Einklang zu bringen. Beispielsweise funktioniert das Modul-Subsystem von Node.js nicht gemäß den ECMAScript-Standards. Node.js 10 aktualisiert die Versionen der verschiedenen im Produkt verwendeten Kernkomponenten, sodass Entwickler Geschwindigkeits- und Sicherheitsverbesserungen nutzen können.

Importieren Sie Illustrator-Ebenen in After Effects

Darüber hinaus beschleunigt die Arbeit an HTTP / 2 die Bereitstellung von Inhalten in Szenarien mit eingeschränkter Bandbreite und / oder Latenz. Eine Änderung der nativen Benutzeroberfläche vereinfacht das Leben der Entwickler von Node.js-Plugins und führt zu einem lebendigeren Erweiterungs-Ökosystem. Der sehr detaillierte technische Charakter der Änderungen erschwert die Bereitstellung einzelner Beispiele. In diesem Beitrag haben wir jedoch 20 kurze Informationen zusammengefasst, die Ihnen helfen, Node.js 10 in den Griff zu bekommen.



Wenn Sie immer über die neuesten Entwicklungen in Node.js informiert sein möchten, besuchen Sie diese GitHub Seite . Es bietet einen detaillierten Überblick über Änderungen am Produkt.

01. Aktualisieren Sie Ihre Umgebung

Node.js kann von Hand kompiliert werden. Die meisten Linux-Distributionen können jedoch ein automatisches Installationsprogramm ausführen. Der Code hier zeigt den Installationsprozess unter Ubuntu 14.04 LTS. Wenn Ihr Betriebssystem in Abb. 1 angezeigt wird, Einen ähnlichen Prozess finden Sie hier .

tamhan@TAMHAN14:~$ sudo apt-get remove nodejs tamhan@TAMHAN14:~$ curl -sL https://deb. nodesource.com/setup_10.x | sudo -E bash - tamhan@TAMHAN14:~$ sudo apt-get install -y nodejs

02. Fehler ausspähen…

Entwickler haben seit Node.js 1.0 Zeichenfolgenvergleiche durchgeführt, um Fehler zu finden. Version 9.0 wurde jedoch auf einfacher zu handhabende Konstanten umgestellt. Der diesem Schritt beigefügte Code ist immun gegen Rechtschreibfehler und widersteht Versuchen, die Benutzerfreundlichkeit durch Neuformulierung von Fehlermeldungen zu verbessern.

try { // foo } catch (err) { if (err.code === 'ERR_ASSERTION') { . . . } else { . . . } }

03.… verstehe sie…

Prozesscomputerprogrammierer scheuen die Idee, Zeichenfolgen zum Übertragen von Fehlerzuständen zu verwenden - Node.js 10 bricht diese Tradition nicht. Stattdessen definiert das Framework einige Dutzend Zeichenfolgen, die als 'magische Konstante' dienen und im Codefeld des 'Fehler'-Objekts zurückgegeben werden können.

04.… und beschreibe sie richtig

Durch die Einführung von Fehlercodes werden herkömmliche Fehlermeldungen nicht verworfen. Code, der auf dem Vorhandensein des Felds '.message' basiert, funktioniert weiterhin genauso wie zuvor. Sollten Sie eine Nachricht präsentieren müssen, die Endbenutzer verstehen können, können Sie dem Feld genauso vertrauen wie zuvor.

const err = new Error('The message'); console.error(err.message);

05. Geschwindigkeit kommt mit V8-Updates

Node.js verwendete immer die V8-Laufzeit für die JavaScript-Ausführung. Wie bei den meisten Projektkooperationen bleibt Node.js normalerweise hinter dem Fortschritt von V8 zurück. Node.js 10 basiert auf Version 6.6 von V8, wodurch die Caching- und Array-Handling-Leistung erheblich verbessert wird.

06. Kopfloser Versuch!

Try-Catch Blöcke sind der Fluch von Java-Programmierern: Es ist üblich, einen mit einem Kommentar gekennzeichneten Block zu finden, der den Compiler herunterfährt. V8 6.6 reduziert die Belastung durch unerwünschte Try-Catches indem Entwickler das weglassen Ausnahme Objekt aus dem Fang Block.

try { doSomethingThatMightThrow(); } catch { handleException(); }

07. Verbesserte Details in der Funktionsreflexion

Ein wenig bekanntes Detail von JavaScript betrifft Funktionen: Sie können auch als Objekte betrachtet werden. Bisher hat die toString () Die Methode hat gerade den Methodennamen zurückgegeben. In Node.js 10 gibt das Programm die gesamte erste Zeile zurück - wie in der Abbildung zu sehen ist, erstreckt sich der Rückgabewert sogar auf alle Arten von Kommentaren

function /* demo */ sayHurz() { console.log(“Hurz!”); } console.log(sayHurz.toString());

08. Abhilfe bei fehlgeschlagenen Updates

Sollte Ihre Workstation die neue Version von Node.js nicht ausführen können, überprüfen Sie die Konfiguration des Paketmanagers. Mit freundlichen Grüßen mussten Sie die beiden im folgenden Code genannten Dateien löschen, bevor der normale Programmbetrieb wieder aufgenommen werden konnte:

wie man Zeichnung in Vektor verwandelt
tamhan@TAMHAN14:/etc/apt/sources.list.d$ sudo rm nodesource.list tamhan@TAMHAN14:/etc/apt/sources.list.d$ sudo rm nodesource.list.save

09. ECMAScript-Module

Während Node.js die Idee von JavaScript-Modulen beeinflusste, ist die ECMAScript-Implementierung nicht mit Common.js kompatibel. Während --experimentelle Module flag gibt es schon seit geraumer Zeit. Node.js 10 bringt einige neue Funktionen mit, mit denen ECMAScript-basierte Module in Node-Umgebungen funktionieren sollen.

lerne Bücher für Kinder zu zeichnen
tamhan@TAMHAN14:~/workspace$ node --experimental-modules index

10. Native Modularchitektur verstehen ...

Während JavaScript viele Dinge kann, erfordern einige Jobs die Verwendung von C ++. Bisher haben Entwickler, die eine engere Integration anstreben, normalerweise ihr Vertrauen in die V8-API gesetzt. Dies führte zu einem Umschreiben des Plugins, wenn die in Node.js verwendete Version von V8 geändert wurde.

11. ... und siehe N-API-Verbesserungen

Zum Glück löst N-API dieses Problem durch die Bereitstellung einer neuen Abstraktionsschicht. Änderungen an der zugrunde liegenden Plattform und den Tools sind nicht länger Entwicklern ausgesetzt, die an Plugins arbeiten. Dadurch wird der Wartungsaufwand verringert und die Upgrades von Node.j hoffentlich reibungsloser.

12. Erfahren Sie mehr über die API

In Bezug auf C-APIs gehört die N-API eindeutig zu den besser gestalteten. Wie gezeigt in qualvollen Details hier Die API ist mit Methoden zur Behandlung von Objekterstellung, Rückrufen und vielem mehr ausgestattet. Darüber hinaus enthält der Header eine Sperre, mit der Sie Funktionen deaktivieren können, die in älteren Versionen des NAPI aus Kompatibilitätsgründen nicht vorhanden sind.

#define NAPI_VERSION 3 #include

13. Verwenden Sie ChaCha20 und Poly1305

Kryptographie war im Web immer von großer Bedeutung. Node.js 10 aktualisiert die zugrunde liegende Version von OpenSSL auf 1.1.0, sodass Entwickler neue Verschlüsselungsalgorithmen verwenden können, von denen erwartet wird, dass sie robuster sind. Dies ist besonders hilfreich, wenn Sie Verschlüsselungsschemata vom Typ AEAD implementieren möchten.

14. Gezielte Verfolgung

Node.js 10 gibt eine Reihe zusätzlicher Ablaufverfolgungsparameter aus, sodass Entwickler sich auf Leistungsprobleme konzentrieren können. Trace-Objekte können außerdem über die im Snippet zu diesem Schritt gezeigten Funktionen nach Belieben aktiviert und deaktiviert werden. Die Genauigkeit der Genauigkeit liegt nun bei jedem Entwickler.

const trace_events = require('trace_events'); const t1 = trace_events.createTracing({ categories: ['node', 'v8'] }); const t2 = trace_events.createTracing({ categories: ['node.perf', 'node'] }); t1.enable(); t2.enable(); t2.disable();

15. Erfahren Sie mehr über die Ablaufverfolgung

Zum jetzigen Zeitpunkt unterstützt Node.js a Insgesamt acht Trace-Typen . Zusätzlich zu V8-Ereignissen können sich Entwickler auch für Bootstrap registrieren. async_hook und Dateisystem-Synchronisierungsinformationen in der Befehlszeile oder über das Trace-Objekt.

const trace_events = require('trace_events'); const tracing = trace_events.createTracing({ categories: ['node.perf'] }); tracing.enable();

16. HTTP / 2 ist jetzt offiziell…

Während der API-Stabilitätsindikator in der Node.js-Dokumentation weiterhin die HTTP / 2-Unterstützung als experimentell anzeigt, kann die API als stabil angesehen werden.

const http2 = require('http2'); const fs = require('fs'); const server = http2.createSecureServer({ key: fs.readFileSync('localhost-privkey. pem'), cert: fs.readFileSync('localhost-cert.pem') }); server.on('error', (err) => console. error(err));

17.… aber beachten Sie die Verschlüsselung

Beachten Sie bei der Implementierung eines Node.js-Servers, der HTTP / 2 verwendet, dass die unverschlüsselte Version des Protokolls zum Zeitpunkt des Schreibens von keinem Webbrowser unterstützt wird. Aus diesem Grund sollten Sie darauf vorbereitet sein, beim Senden und Empfangen von Daten in proxylosen Konfigurationen mit einem erheblichen Prozessoraufwand umzugehen.

server.on('stream', (stream, headers) => { // stream is a Duplex stream.respond({ 'content-type': 'text/html', ':status': 200 }); stream.end('

Hello World

'); }); server.listen(8443);

18. Dateisystem-API mit Versprechungen

Versprechen sind in JavaScript der letzte Schrei. Bisher mussten Entwickler normalerweise auf vielversprechende Dateisystem-APIs verzichten - ein Problem, das in Node.js 10 behoben wurde. Während des Moduls fs / verspricht ist noch experimentell und bietet bereits eine gute Alternative zu 'herkömmlichen' Dateisystemzugriffen.

require('fs/promises')

19. Es wurden weitere Arbeiten an asynchronen Hooks durchgeführt

Node.js ist standardmäßig Single-Threaded. Async-Hooks ermöglichen es dem Code, asynchron ausgeführte Ressourcen komfortabler im Auge zu behalten. Während die API alles andere als stabil ist, bietet Node.js 10 erhebliche Verbesserungen gegenüber den kaum funktionierenden Implementierungen in früheren Versionen.

const async_hooks = require('async_hooks'); const eid = async_hooks.executionAsyncId(); const tid = async_hooks.triggerAsyncId(); const asyncHook = async_hooks.createHook ({ init, before, after, destroy, promiseResolve });

20. Turbo-NPM

Während NPM normalerweise als Bestandteil der Node.js-Distribution angesehen wird, handelt es sich tatsächlich um ein eigenständiges Produkt. Aktuelle Versionen von Node.js 10 werden mit geliefert NPM 6 Dies bietet erhebliche Geschwindigkeitssteigerungen bei der Installation und Bereitstellung von Paketen. Auf der Maschine dieses Schreibers wurde bei einigen Prozessen die Geschwindigkeit um das Zehnfache erhöht.



wie man Wasser mit Aquarellen malt

Dieser Artikel wurde ursprünglich im kreativen Webdesign-Magazin Web Designer veröffentlicht. Ausgabe 279 kaufen oder abonnieren .

Weiterlesen: