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
Als Verwaltungszentrale und Server dient dabei un...
Vorwort Früher habe ich den Cache verwendet, um d...
CSS-Viewport-Einheiten gibt es schon seit einigen...
Vorwort Normalerweise müssen Sie beim Erstellen v...
Im Allgemeinen : [1 wichtige Flagge] > [4 beson...
Inhaltsverzeichnis Ursache des Vorfalls Verwenden...
Dieser Artikel stellt hauptsächlich die Analyse d...
Inhaltsverzeichnis SSH-Protokoll SSH Verbindungsp...
Gemeinsamkeiten: Das DIV-Tag und das SPAN-Tag beh...
Transaktionale Merkmale 1. Atomarität: Nach dem S...
Inhaltsverzeichnis 1. Einleitung 2. Mehrere wicht...
I. Einleitung Lassen Sie mich zunächst die MySQL-...
Hintergrund Alle Unternehmenswebsites müssen das ...
/******************** * Virtuelles Dateisystem VF...
Es gibt zwei Möglichkeiten, Daten in MySQL zu lös...