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
1. Die Verwendung der oder Syntax in MySQL und di...
Egal, ob Sie versuchen, Daten von einem sterbende...
1. Verständnis der Übergangsattribute 1. Das Über...
Inhaltsverzeichnis 01 Szenarioanalyse 02 Funktion...
Einführung: Die Konfiguration von Docker, auf dem...
Über Verbindungen lassen sich faktische Fremdschl...
Experimentelle Umgebung • Eine minimal installier...
Inhaltsverzeichnis 1. Grundlegende Verwendung 2. ...
Am Samstag war der Redis-Server auf dem Produktio...
In diesem Artikel wird das ausführliche Installat...
Ich lerne gerade MySQL. Ich bin ein kompletter Ne...
Das AI-Bildschneiden muss mit PS koordiniert werd...
Inhaltsverzeichnis 1. Doppelte Anfragen storniere...
Es gibt viele Tags in XHTML, aber nur wenige werd...