Inhaltsverzeichnis
Was ist Fluent API?
Wie ist die Leistung?
Heim Web-Frontend js-Tutorial JavaScript: Die Kunst fließender APIs beherrschen

JavaScript: Die Kunst fließender APIs beherrschen

Sep 04, 2023 am 08:09 AM

Beim Entwerfen von Babylon.js v2.0 (a (Bibliothek zum Erstellen von 3D im Web) habe ich kürzlich festgestellt, dass ich mir mehr wünschte Die API ist glatt – ich möchte jedoch, dass sie für die Community leichter lesbar ist. Verstehen Sie Ihre Arbeit und bauen Sie sie aus, während Sie weniger Zeit mit der technischen Dokumentation verbringen.

In diesem Tutorial behandle ich Fluent-APIs: Was ist zu beachten und wie geht das? Schreiben und die Auswirkungen auf die browserübergreifende Leistung.

Was ist Fluent API?

JavaScript:掌握流畅 API 的艺术

Die Fluent-API, wie in diesem Wikipedia-Artikel beschrieben, ist Objektorientierte API für besser lesbaren Code. JQuery ist ein großartiges Beispiel dafür, was eine fließende API Ihnen ermöglicht:

 $('<div></div>')

     .html("Fluent API are cool!")

     .addClass("header")

     .appendTo("body");

Smooth API ermöglicht Ihnen die Verknüpfung Die Funktion wird durch die Rückgabe dieses Objekts aufgerufen.

Wir können ganz einfach eines erstellen Fluent-API wie folgt:

var MyClass = function(a) {

    this.a = a;

}



MyClass.prototype.foo = function(b) {

    // Do some complex work   

    this.a += Math.cos(b);

    return this;

}

Wie Sie sehen, der Trick Gibt einfach das this-Objekt zurück (das auf die aktuelle Instanz verweist). (in diesem Fall), damit die Kette weiterlaufen kann.

Wenn Sie es nicht wissen Wie das Schlüsselwort „this“ in JavaScript funktioniert, empfehle ich Ihnen, diesen tollen Artikel zu lesen Autor des Artikels: Mike West.

Dann können wir Anrufe verketten:

var obj = new MyClass(5);

obj.foo(1).foo(2).foo(3);

Bevor Sie versuchen, Folgendes zu tun Wie bei Babylon.js möchte ich sicherstellen, dass dadurch keine generiert werden Leistungsprobleme.

Wie ist die Leistung?

Also habe ich einen Benchmark-Test gemacht!

var count = 10000000;



var MyClass = function(a) {

    this.a = a;

}



MyClass.prototype.foo = function(b) {

    // Do some complex work   

    this.a += Math.cos(b);

    return this;

}



MyClass.prototype.foo2 = function (b) {

    // Do some complex work   

    this.a += Math.cos(b);

}



var start = new Date().getTime();

var obj = new MyClass(5);

obj.foo(1).foo(2).foo(3);

for (var index = 0; index < count; index++) {

    obj.foo(1).foo(2).foo(3);

}

var end = new Date().getTime();



var start2 = new Date().getTime();

var obj2 = new MyClass(5);

for (var index = 0; index < count; index++) {

    obj2.foo2(1);

    obj2.foo2(2);

    obj2.foo2(3);

}

var end2 = new Date().getTime();



var div = document.getElementById("results");



div.innerHTML += obj.a + ": With return this: " + (end - start) + "ms<BR>";

div.innerHTML += obj2.a + ": Without return this: " + (end2 - start2) + "ms";

as Sie können sehen, dass foofoo2 genau das Gleiche bewirkt. nur Der Unterschied besteht darin, dass foo 可以链接,而 foo2 es nicht kann.

Natürlich die Anrufkette Der Unterschied ist:

obj.foo(1).foo(2).foo(3);

und

obj2.foo2(1);

obj2.foo2(2);

obj2.foo2(3);

Mit diesem Code habe ich ihn ausgeführt Finden Sie heraus, ob Chrome, Firefox und IE für mich interessant sind Leistung.

JavaScript:掌握流畅 API 的艺术

Das ist das Ergebnis Ich bekomme:

  • Auf Chrome ist die reguläre API 6 % langsamer als die Fluent API.
  • Auf Firefox, Beide APIs laufen nahezu identisch (Fluent API langsamer 1 %).
  • Am IE, Beide APIs laufen nahezu identisch (Fluent API ist 2 % langsamer).

Das Problem ist, dass ich der Funktion eine Operation hinzugefügt habe (Math.cos) Simuliert eine Art Verarbeitung durch eine Funktion.

Wenn ich alles lösche Behalten Sie einfach die return-Anweisung bei, sie funktioniert nicht auf allen Browsern Der Unterschied (eigentlich nur ein bis zwei Millisekunden über 10.000.000 Versuche). Du Sie können es selbst browserübergreifend testen. wenn nicht Das Gerät ist praktisch und es gibt viele kostenlose Tools auf dev.modern.IE. Führen Sie einfach keine Leistungstests auf virtuellen Maschinen durch Für echte Geräte.

Mein Fazit lautet also: Komm schon!

Die Fluent-API ist großartig – sie erzeugt besser lesbaren Code und Sie können ihn ohne Probleme oder Leistungseinbußen verwenden!

Mehr Übung JavaScript

Das kommt für Sie vielleicht etwas überraschend, aber Microsoft Es gibt viele kostenlose Lerninhalte zu vielen Open-Source-JavaScript-Themen, und das tun wir auch Mit der Einführung von Microsoft Edge ist es unsere Mission, mehr zu schaffen. Schauen Sie sich mein eigenes an:

  • Einführung in 3D mit HTML5 und WebGL Babylon.JS
  • Erstellen Sie mit den folgenden Befehlen eine Einzelseitenanwendung ASP.NET und AngularJS
  • Modernste Grafiken in HTML

Oder die Lernreihe unseres Teams:

  • Praktische Leistungstipps für Ihre HTML/JavaScript Faster (eine siebenteilige Serie von Responsive Design bis Casual Games bis hin zur Leistungsoptimierung)
  • Schnellstart mit modernen Netzwerkplattformen (Grundlagen HTML, CSS und JavaScript)
  • Entwickeln Sie universelle Windows-Anwendungen HTML- und JavaScript-Jump-Start (unter Verwendung des JS, das Sie bereits erstellt haben Erstellen Sie eine App)

Plus einige kostenlose Tools: Visual Studio Community, Azure-Testversion und browserübergreifende Testtools für Mac, Linux oder Windows Windows.

Dieser Artikel ist Teil von Web Development Technology Serie von Microsoft. Wir freuen uns, Ihnen Microsoft Edge und die neue EdgeHTML-Rendering-Engine mitzuteilen. frei Virtuelle Maschine oder Remote-Tests auf Mac-, iOS-, Android- oder Windows-Geräten @http://dev.modern.ie/.

Das obige ist der detaillierte Inhalt vonJavaScript: Die Kunst fließender APIs beherrschen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie arbeite man mit Daten und Zeiten in JS? Wie arbeite man mit Daten und Zeiten in JS? Jul 01, 2025 am 01:27 AM

Die folgenden Punkte sollten bei der Verarbeitung von Daten und Zeiten in JavaScript festgestellt werden: 1. Es gibt viele Möglichkeiten, Datumsobjekte zu erstellen. Es wird empfohlen, ISO -Format -Zeichenfolgen zu verwenden, um die Kompatibilität sicherzustellen. 2. Die Zeitinformationen erhalten und festlegen können und setzen Sie Methoden fest, und beachten Sie, dass der Monat mit 0 beginnt. 3. Die manuell formatierende Daten sind Zeichenfolgen erforderlich, und auch Bibliotheken von Drittanbietern können verwendet werden. 4. Es wird empfohlen, Bibliotheken zu verwenden, die Zeitzonen wie Luxon unterstützen. Das Beherrschen dieser wichtigen Punkte kann häufige Fehler effektiv vermeiden.

Warum sollten Sie  Tags am Ende des  platzieren? Warum sollten Sie Tags am Ende des platzieren? Jul 02, 2025 am 01:22 AM

PlatztagsattheBottomofabogpostorwebpageServeSpracticalPurposesforseo, Usexperience und design.1ithelpswithseobyallowingEnginestoaccessKeyword-relevantTagswithoutClutteringHemainContent.2.

Was sprudelt und fängt Ereignis im Dom? Was sprudelt und fängt Ereignis im Dom? Jul 02, 2025 am 01:19 AM

Ereigniserfassung und Blase sind zwei Phasen der Ereignisausbreitung in DOM. Die Erfassung erfolgt von der oberen Schicht bis zum Zielelement, und die Blase ist vom Zielelement bis zur oberen Schicht. 1. Die Ereigniserfassung wird implementiert, indem der UseCapture -Parameter von AddEventListener auf true festgelegt wird. 2. Ereignisblase ist das Standardverhalten, Uscapture ist auf false oder weggelassen. 3. Die Ereignisausbreitung kann verwendet werden, um die Ereignisausbreitung zu verhindern. 4. Event Bubbling unterstützt die Ereignisdelegation, um die Effizienz der dynamischen Inhaltsverarbeitung zu verbessern. 5. Capture kann verwendet werden, um Ereignisse im Voraus abzufangen, wie z. B. Protokollierung oder Fehlerverarbeitung. Das Verständnis dieser beiden Phasen hilft dabei, das Timing und die Reaktion von JavaScript auf Benutzeroperationen genau zu steuern.

Wie können Sie die Nutzlastgröße einer JavaScript -Anwendung reduzieren? Wie können Sie die Nutzlastgröße einer JavaScript -Anwendung reduzieren? Jun 26, 2025 am 12:54 AM

Wenn JavaScript -Anwendungen langsam geladen werden und eine schlechte Leistung haben, ist das Problem, dass die Nutzlast zu groß ist. Zu den Lösungen gehören: 1. Verwenden Sie die Codespaltung (codessplitting), teilen Sie das große Bündel über React.lazy () in mehrere kleine Dateien auf und laden Sie es nach Bedarf, um den ersten Download zu reduzieren. 2. Entfernen Sie den unbenutzten Code (Treeshaker), verwenden Sie den ES6 -Modulmechanismus, um "toten Code" zu löschen, um sicherzustellen, dass die eingeführten Bibliotheken diese Funktion unterstützen. 3.. Ressourcendateien komprimieren und verschmelzen, GZIP/Brotli und Terser aktivieren, JS zu komprimieren, Dateien vernünftig zusammenzufassen und statische Ressourcen zu optimieren. V.

Eine endgültige JS -Zusammenfassung auf JavaScript -Modulen: ES -Module gegen CommonJs Eine endgültige JS -Zusammenfassung auf JavaScript -Modulen: ES -Module gegen CommonJs Jul 02, 2025 am 01:28 AM

Der Hauptunterschied zwischen ES -Modul und CommonJs ist das Lademethode und das Nutzungsszenario. 1.Kommonjs ist synchron geladen und für die node.js server-Seite-Umgebung geeignet. 2. Das Modul ist asynchron geladen und für Netzwerkumgebungen wie Browser geeignet. A. 4.Commonjs wird in alten Versionen von Node.js und Bibliotheken, die auf IT wie Express angewiesen sind, häufig verwendet, während ES-Module für moderne Front-End-Frameworks und Node.jsv14 geeignet sind; 5. Obwohl es gemischt werden kann, kann es leicht zu Problemen führen.

Wie stelle ich eine HTTP -Anforderung in node.js? Wie stelle ich eine HTTP -Anforderung in node.js? Jul 13, 2025 am 02:18 AM

Es gibt drei gängige Möglichkeiten, HTTP-Anforderungen in Node.js zu initiieren: Verwenden Sie integrierte Module, Axios und Knotenfetch. 1. Verwenden Sie das integrierte HTTP/HTTPS-Modul ohne Abhängigkeiten, das für grundlegende Szenarien geeignet ist, jedoch eine manuelle Verarbeitung von Datengenähten und Fehlerüberwachung erfordert, z. 2.Axios ist eine auf Versprechen basierende Bibliothek von Drittanbietern. Es verfügt über eine kurze Syntax und leistungsstarke Funktionen, unterstützt Async/Auseait, automatische JSON -Konvertierung, Interceptor usw. Es wird empfohlen, asynchrone Anforderungsvorgänge zu vereinfachen. 3.Node-Fetch bietet einen Stil ähnlich dem Browser-Abruf, basierend auf Versprechen und einfacher Syntax

Was sind Best Practices für das Schreiben eines sauberen und wartbaren JavaScript -Codes? Was sind Best Practices für das Schreiben eines sauberen und wartbaren JavaScript -Codes? Jun 23, 2025 am 12:35 AM

Um sauberen und aufrechterhaltenen JavaScript -Code zu schreiben, sollten die folgenden vier Punkte befolgt werden: 1. Verwenden Sie klare und konsistente Benennungsspezifikationen. Variablennamen werden mit Substantiven wie der Anzahl verwendet, Funktionsnamen werden mit Verben wie FetchData () und Klassennamen mit Pascalcase wie Benutzerprofil verwendet. 2. Vermeiden Sie übermäßig lange Funktionen und Nebenwirkungen. Jede Funktion macht nur eine Sache, z. B. die Aufteilung von Aktualisierung von Benutzerinformationen in Formatuser, SaveUser und Renderuser. 3.. Verwenden Sie die Modularität und Komponentierung vernünftigerweise, z. 4. Schreiben Sie Kommentare und Dokumente bis zum Zeitpunkt und konzentrieren

Wie funktioniert die Müllsammlung in JavaScript? Wie funktioniert die Müllsammlung in JavaScript? Jul 04, 2025 am 12:42 AM

Der Müllsammlung von JavaScript verwaltet den Speicher automatisch über einen Tag-Clearing-Algorithmus, um das Risiko eines Speicherlecks zu verringern. Der Motor durchquert und markiert das aktive Objekt aus dem Wurzelobjekt, und nicht markiert wird als Müll behandelt und gelöscht. Wenn das Objekt beispielsweise nicht mehr referenziert wird (z. B. die Variable nach NULL), wird es in der nächsten Runde des Recyclings freigegeben. Zu den häufigen Ursachen für Speicherlecks gehören: ① Ungeräte Timer oder Event -Hörer; ② Verweise auf externe Variablen in Schließungen; ③ Globale Variablen halten weiterhin eine große Datenmenge. Der V8 -Motor optimiert die Recyclingeffizienz durch Strategien wie Recycling von Generationen, inkrementelle Markierung, paralleles/gleichzeitiges Recycling und verkürzt die Hauptblockierungszeit. Während der Entwicklung sollten unnötige globale Referenzen vermieden und Objektverbände umgehend dekoriert werden, um die Leistung und Stabilität zu verbessern.

See all articles