Svelte gibt es schon lange und ich wollte schon immer einen leicht verständlichen Artikel zur Prinzipanalyse schreiben. Nachdem ich es so lange aufgeschoben hatte, habe ich es endlich geschrieben. Demo1 Schauen wir uns zunächst den Kompilierungsprozess an. Betrachten Sie den folgenden <h1>{Anzahl}</h1> <Skript> lass count = 0; </Skript> Dieser Code erzeugt nach der Kompilierung durch den Compiler folgenden Code, der aus drei Teilen besteht: Methode Deklarationserklärung der // Etwas Code weglassen... Funktion create_fragment(ctx) { sei h1; zurückkehren { C() { h1 = Element("h1"); h1.textContent = `${count}`; }, m(Ziel, Anker) { einfügen (Ziel, h1, Anker); }, d(Abtrennen) { if (abtrennen) detach(h1); } }; } lass count = 0; Klasse App erweitert SvelteComponent { Konstruktor(Optionen) { super(); init(diese, Optionen, null, Fragment erstellen, sicher_nicht_gleich, {}); } } Standard-App exportieren; Fragment erstellen Schauen wir uns zunächst die Methode h1 = Element("h1"); h1.textContent = `${count}`; einfügen (Ziel, h1, Anker); Die Funktion einfügen(Ziel, Knoten, Anker) { target.insertBefore(Knoten, Anker || null); } if (abtrennen) detach(h1); Die Funktion trennen (Knoten) { node.parentNode.removeChild(Knoten); } Wenn Sie sich das Flussdiagramm genau ansehen, werden Sie feststellen, dass das kompilierte Produkt Dies liegt daran, dass Es kann festgestellt werden, dass die von SvelteComponent Jede Komponente entspricht einer Klasse App erweitert SvelteComponent { Konstruktor(Optionen) { super(); init(diese, Optionen, null, Fragment erstellen, sicher_nicht_gleich, {}); } } Zusammenfassend lautet das Kompilierungsergebnis des gepunkteten Teils im Flussdiagramm in Demo, die den Status ändern kann Ändern Sie nun <h1 bei:Klick="{update}">{Anzahl}</h1> <Skript> lass count = 0; Funktion update() { zählen++; } </Skript> Die kompilierten Produktänderungen und die Änderungen von // Aus der Deklaration der obersten Ebene des Moduls lass count = 0; // Werde eine Instanzmethode function instance($$self, $$props, $$invalidate) { lass count = 0; Funktion update() { $$invalidate(0, Anzahl++, Anzahl); } zurückgeben [Anzahl, Aktualisierung]; } // Definieren Sie 3 Apps in der Vorlage <App/> <App/> <App/> // Wenn die Anzahl unveränderlich ist, wird die Seite wie folgt gerendert: <h1>0</h1> <h1>0</h1> <h1>0</h1> Wenn <h1>0</h1> <h1>3</h1> <h1>1</h1> Daher muss jede
Sobald die Variable gefunden wurde, wird sie in Wenn gleichzeitig auf die Anweisung, die die obige Operation ausführt, über die Vorlage verwiesen werden kann, wird die Anweisung mit In
Daher wird die Anweisung, dass die Änderungen im kompilierten // im Quellcode aktualisieren Funktion update() { zählen++; } // Update in kompilierter Instanz Funktion update() { $$invalidate(0, Anzahl++, Anzahl); }
Die C() { h1 = Element("h1"); //Der Wert von count wird aus ctx ermittelt t = text(/*count*/ ctx[0]); }, m(Ziel, Anker) { einfügen (Ziel, h1, Anker); anhängen(h1, t); // Ereignisbindung dispose = listen(h1, "click", /*update*/ ctx[1]); }, p(ctx, [schmutzig]) { // set_data aktualisiert den in t gespeicherten Textknoten if (dirty & /*count*/ 1) set_data(t, /*count*/ ctx[0]); }, d(Abtrennen) { if (abtrennen) detach(h1); // Ereignisbindung aufheben dispose(); } Die Methode In // Verweisen Sie auf mehrere Zustände in der Benutzeroberfläche<h1 on:click="{count0++}">{count0}</h1> <h1 bei:Klick="{count1++}">{count1}</h1> <h1 bei:Klick="{count2++}">{count2}</h1> Die entsprechende p(neu_ctx, [schmutzig]) { ctx = neuer_ctx; wenn (dirty & /*Anzahl*/ 1) set_data(t0, /*Anzahl*/ ctx[0]); wenn (dirty & /*Anzahl1*/ 2) set_data(t2, /*Anzahl1*/ ctx[1]); wenn (dirty & /*Anzahl2*/ 4) set_data(t4, /*Anzahl2*/ ctx[2]); }, Die vollständigen Aktualisierungsschritte
Oben finden Sie den detaillierten Inhalt der detaillierten Erklärung der Implementierungsprinzipien von Svelte in der JavaScript-Entwicklung. Weitere Informationen zu den Implementierungsprinzipien von Svelte finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
<<: Ein MySQL-Migrationsplan und eine praktische Auflistung der Fallstricke
>>: HTML+CSS lässt Div-Tags Löschsymbole in der oberen rechten Ecke hinzufügen. Beispielcode
In diesem Artikel wird der spezifische JavaScript...
In diesem Artikel wird der spezifische JavaScript...
Erstellen Sie eine HTML-Seite mit einer ungeordnet...
Vor zwei Tagen habe ich das Double 11-Shopping-Fe...
Einführung Es ist in Ordnung, am Ende eines JS-Co...
Vorwort Aufgrund der unterschiedlichen Codiergewo...
DOKTYP Doctype wird verwendet, um dem Browser mit...
Inhaltsverzeichnis 1 Frage 2 Methoden 3 Experimen...
sftp ist die Abkürzung für Secure File Transfer P...
Inhaltsverzeichnis Vorwort Was ist DrawCall Welch...
In diesem Artikel werden hauptsächlich drei Metho...
Inhaltsverzeichnis Vorwort: Freundliche Tipps: Va...
Warum sagen wir „normalerweise 1em=16px“? Die vom...
1. Ursache: Der Effekt, nachdem die Subbox auf Fl...
1. Docker installieren yum installiere Docker #St...