Heim > Artikel > Web-Frontend > Was bietet JavaScript außer der zehnmal schnelleren Asynchronisierung noch?
Mit JavaScript können Entwickler auf herkömmliche Weise Webanwendungen in verschiedenen Webbrowsern erstellen und Befehlszeilentools und Serveranwendungen entwickeln Desktop-Anwendungen können über das Electron-Framework auf Basis von JavaScript und Web-Technologien wie HTML und CSS erstellt werden; mit React Native können plattformübergreifende mobile Anwendungen entwickelt werden. Darüber hinaus kann JavaScript sogar auf IoT-Geräten ausgeführt werden.
Ecma TC39 verwaltet die Entwicklung des ECMAScript-Ökosystems. Es ist der Standard hinter der aktuellen JavaScript-Sprache. Das Google V8-Team war aktiv an der Standardisierungsarbeit im Zusammenhang mit JavaScript beteiligt.
V8 ist die Open-Source-JavaScript-Engine (auch eine WebAssembly-Engine). Plattformen wie Chrome, Node.js und Electron basieren alle auf V8. Gleichzeitig basieren neben Chrome auch eine Reihe von auf Chromium basierenden Webbrowsern wie Opera und der kommende Microsoft Edge unten auf V8.
Empfohlenes Lernen: „JavaScript Video Tutorial“
Auf der Google I/O 2019 vor ein paar Tagen haben Mathias Bynens vom V8-Team und Sathya Gunasekaran teilt den neuesten Entwicklungsfortschritt in JavaScript.
Das V8-Team gab an, dass es seine Mission sei, die hohe Leistung von modernem JavaScript und WebAssembly voranzutreiben. Es ist erwähnenswert, dass der Sharer „reale Welt“ verwendet hat, um die Leistung zu beschreiben, und das eingeführt hat Die sogenannte „Leistung in der realen Welt“ steht im Gegensatz zu der Leistung, die nur für Benchmark-Daten gilt. Google betont, dass es den Effekt einer hohen Leistung erreichen möchte, die tatsächlich im wirklichen Leben erreicht werden kann, und nicht so „out-“ der Welt".
Sie gaben mehrere Beispiele. Seit Chrome 61 hat das V8-Team die Geschwindigkeit des Roh-JavaScript-Parsings verdoppelt und diese Daten werden auf echten Websites getestet. Gleichzeitig konnten 40 % der Parsing- und Kompilierungsarbeit erfolgreich aus dem Hauptthread entfernt werden, wodurch der Start der Webseite reibungsloser wurde.
Zusätzlich zu Chrome sind auch in Node.js Geschwindigkeitsverbesserungen erkennbar. Im Vergleich zu Node.js 7 wurde die asynchrone Geschwindigkeit von Node.js 12 um 10 erhöht Mal ist Promise.all 12-mal schneller.
Zusätzlich zur verbesserten Parsing-Geschwindigkeit und Laufzeitleistung wurde auch der Speicherverbrauch von Chrome 70 auf Chrome 76 reduziert auf Android wurde um 20 % reduziert.
Der Redner stellte dann einige neue Funktionen von JavaScript vor und deckte viele Inhalte ab. Hier finden Sie eine kurze Einführung in einige der interessanteren Funktionen:
API zur umgangssprachlichen Anzeige von Zeitphrasen verwenden
Dies ist eine der vielen neuen Intl.*-APIs, und es ist auch eine Funktion, die vom Publikum intensiver diskutiert wurde. bezieht sich auf die Internationalisierungsfunktion.
Wenn wir uns in unserem täglichen Leben auf die Zeit beziehen, sagen wir „letzte Woche“, „letzten Monat“ und „vor 42 Sekunden“. Mit der neuen Funktion Intl.RelativeTimeFormat() kann das Programm bestimmte verwenden Die Sprache gibt diese Ausdrücke anstelle der kastenförmigen „vor einer Woche“, „vor einem Monat“ und „vor 42 Sekunden“ zurück.
Der Sprecher hat diese Funktion auf Englisch und Tamilisch demonstriert und der Effekt ist wie folgt:
Derzeit ist diese Funktion Da die Phrasendarstellung von Sekunden, Minuten, Stunden, Tagen, Wochen, Monaten und Jahreszeiten unterstützt wird und mehrere Sprachen unterstützt werden (nicht sicher, ob chinesische Unterstützung verfügbar ist), müssen Entwickler keine dedizierte Liste relativer Zeitphrasen mehr pflegen.
globalThisWenn Sie JavaScript für verschiedene Plattformen schreiben möchten, sei es Node.js oder einen Webbrowser, benötigen Sie entsprechenden Code zur Anpassung globale Situation.“ Dies ist beispielsweise ein Webbrowser. Sie müssen zur Beurteilung „Fenster“ verwenden. Wenn „Fenster“ jedoch nicht verfügbar ist, müssen Sie zur Überprüfung auch „Selbst“ verwenden. global“ zu beurteilen, aber wenn es sich um eine unabhängige JavaScript-Shell-Umgebung handelt, hat sich die Situation erneut geändert.
Umgebungsfaktoren sind sehr komplex und verschiedene Plattformumgebungen erfordern komplizierte Anpassungsprozesse, die für Entwickler sehr schmerzhaft sein werden. Daher hat das V8-Team eine „globalThis“-Funktion hinzugefügt. die leicht auf das globale „dies“ zugreifen kann, ohne auf die Umgebung angewiesen zu sein.
Derzeit unterstützen Chrome, Firefox, Safari und Node.js alle diese Funktion. Sie gilt auch für Polyfill und andere Bibliotheken, die globalen Zugriff auf „dies“ erfordern.
WeakRef
Normalerweise bedeutet Objektreferenz in JavaScript, dass es sich nicht um eine GC handelt, solange es auf andere Objekte verwiesen wird Wenn auf das Objekt nicht mehr verwiesen wird, fordert der GC-Mechanismus automatisch den vom Objekt belegten Speicher zurück, unabhängig davon, ob sich das Objekt noch in der referenzierten Struktur befindet.
Derzeit gibt es in JavaScript zwei schwache Referenzmethoden: WeakMap und WeakSet. Solange ein Objekt zu WeakMap oder WeakSet hinzugefügt wird, kann der GC den von ihm belegten Speicher zurückgewinnen, wenn eine Bedingung ausgelöst wird.
WeakRef ist eine erweiterte API, die einen Einblick in den Objektlebenszyklus bietet und das Szenario lösen kann, in dem WeakMap nur den Objekttyp als Schlüssel unterstützt.
Der Sprecher hat das Zwischenspeichern von Bildern als Beispiel genommen. Die Karte sperrt den Schlüssel und den Wert des Bildes, sodass der Bildname und die Bilddaten nicht GCed werden, da immer darauf verwiesen wird. Andererseits funktioniert die schwache Referenz WeakMap hier nicht, da der Bildname ein Zeichenfolgentyp ist und WeakMap vorschreibt, dass sein Schlüssel nur ein Objekttyp sein kann.
WeakRef löst dieses Problem, indem es das Bildobjekt direkt zwischenspeichert. Der Bildname wird als Schlüssel verwendet und die schwache Referenz von WeakRef wird im Cache als Wert gespeichert. Dies bringt jedoch ein weiteres Problem mit sich: Da der Bildname Key ist, behält die Karte diese Bildnamenzeichenfolgen weiterhin bei. Idealerweise würden diese Zeichenfolgen auch GCed sein.
Die Lösung für WeakRef besteht darin, eine neue API „FinalizationGroup()“ einzuführen, eine Rückruffunktion zu registrieren und die zuvor erwähnten „Residuen“ aus dem Cache zu löschen, wenn der GC wird ausgelöst.
Zusätzlich zu diesen Punkten umfassen die neuen JavaScript-Sprachfunktionen auch:
Klassendateien können direkt eingebunden werden Die Klasse initialisiert Variablen, ohne sie in den Konstruktor zu schreiben
Privater Setter und Getter
String .matchAll kann regelmäßig mehrere Übereinstimmungen durchführen
, um die Lesbarkeit von Zahlen zu verbessern. Numerische Trennzeichen können beim Schreiben von Zahlen „_“ als Trennzeichen verwenden
Neuer großer Zahlentyp BigInt
Fügen Sie einige Intl.*-APIs hinzu, das heißt, verwenden Sie Für internationalisiert APIs wie Intl.NumberFormat lokalisierte formatierte Zahlenanzeige, Intl.RelativeTimeFormat() und Intl.DateTimeFormat() lokalisierte Anzeigezeit
Warten auf oberster Ebene, nein muss asynchron geschrieben werden
Neue Promise-Funktion Promise.allSettled() und Promise.any()
Für spezifische Inhalte können Sie sich das Redevideo ansehen:
https://www.youtube.com/watch?v=c0oy0vQKEZE
Das obige ist der detaillierte Inhalt vonWas bietet JavaScript außer der zehnmal schnelleren Asynchronisierung noch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!