


Einführung in die Komponenten des JavaScript-Frameworks (xmlplus) (Neun) Baum (Baum)
xmlplus ist ein JavaScript-Framework, das für die schnelle Entwicklung von Front-End- und Back-End-Projekten verwendet wird. In diesem Artikel wird hauptsächlich der Baum der xmlplus-Komponentendesignreihe vorgestellt, der einen gewissen Referenzwert hat.
Die Baumkomponente ist eine Komponente mit einer hierarchischen Struktur und wird häufig in verschiedenen Arten von Szenen verwendet. In diesem Kapitel wird eine einfache Baumkomponente implementiert. Obwohl ihre Funktionalität begrenzt ist, können Sie sie erweitern, um die benötigte Baumkomponente zu implementieren.
Datenquelle
Die Datenquelle der Baumkomponente kann ein Datenobjekt im JSON-Format sein oder es kann ein Datenobjekt mit XML-strukturierten Daten oder anderen hierarchisch strukturierten Daten sein. In diesem Kapitel werden Datenobjekte mit dem folgenden JSON-Format verwendet.
var data = { name: 'My Tree', children: [ { name: 'hello' }, { name: 'world' }, { name: 'child folder', children: [ { name: 'alice' } ] } ] };
In der obigen Datenquelle wird der Namenswert als Name des Baumknotens angezeigt, und das Array mit den untergeordneten Elementen stellt die untergeordneten Elemente des Knotens dar.
Design der rekursiven Struktur
Das Objekt besteht aus den Listenelementen ul und li in HTML. Das Objekt hat eine natürliche Baumstruktur Wir verwenden sie gut als Grundelemente für den Aufbau von Baumkomponenten. Die äußerste Schicht der Baumkomponente muss ein ul-Element sein, daher können wir die Baumkomponente vorübergehend wie folgt definieren:
Tree: { xml: `<ul id='tree'> <Item id='item'/> </ul>` }
Die undefinierte Komponente Element hier ist eine Unterelementkomponente, die rekursiv definiert werden muss . Nachkommende Objekte werden basierend auf den bereitgestellten Daten rekursiv generiert. Hier ist ein mögliches Design:
Item: { xml: `<li id='item'> <p id='content'> <span id='neme'/><span id='expand'/> </p> <ul id='entries'/> </li>`, map: { defer: "entries" } }
Beachten Sie, dass das obige Neme-Objekt zur Anzeige des Namensattributs verwendet wird. Das Erweiterungsobjekt wird zum Erweitern oder Schließen von untergeordneten Objekteinträgen verwendet. Untergeordnete Objekteinträge sind so eingerichtet, dass eine verzögerte Instanziierung erforderlich ist, und werden nur dann instanziiert, wenn der Benutzer auf das erweiterte Objekt klickt, um das untergeordnete Objekt zu erweitern.
Laden und Rendern von Daten
Wie im vorherigen Abschnitt erwähnt, legen wir fest, dass die untergeordneten Objekteinträge träge instanziiert werden. Daher sollte die für den Unterpunkt „Item“ bereitgestellte Dateneinstellungsschnittstelle die Einträge nicht sofort instanziieren. Im Folgenden geben wir zunächst die Datenschnittstellenfunktion an.
Item: { // css, xml, map 项同上 fun: function (sys, items, opts) { var data; function val(value) { data = value; sys.neme.text(data.name); data.children && data.children.length && sys.expand.show().text(" [+]"); } return { val: val }; } }
Dieser Schnittstellenfunktionswert legt lediglich den Inhalt fest, der sich auf den aktuellen Knoten bezieht. Als nächstes hören wir auf das Klickereignis des Erweiterungsobjekts und schließen die Instanziierung der Komponentenobjekteinträge rechtzeitig ab.
Item: { // css, xml, map 项同上 fun: function (sys, items, opts) { var data, open; sys.expand.on("click", function () { open = !open; sys.expand.text(open ? " [-]" : " [+]"); open ? (sys.entries.show() && load()) : sys.entries.hide(); }); function load() { if ( sys.entries.children().length == 0 ) for ( var item of data.children ) sys.add.before("Item").value().val(item); } function val(value) { data = value; sys.neme.text(data.name); data.children && data.children.length && sys.expand.show().text(" [+]"); } return { val: val }; } }
Der obige Code enthält einen offenen Parameter, der aufzeichnet, ob sich der aktuelle Knoten in einem erweiterten Zustand zur Verwendung durch verwandte Listener befindet.
Knoten dynamisch hinzufügen
Jetzt nehmen wir eine kleine Erweiterung an der obigen Komponente vor, damit sie die Funktion des dynamischen Hinzufügens von Baumknoten unterstützt. Zuerst fügen wir dem untergeordneten Objekt der Objekteinträge eine Auslöseschaltfläche hinzu und nennen sie „add“.
Item: { xml: "<li id='item'> <p id='content'> <span id='neme'/><span id='expand'/> </p> <ul id='entries'> <li id='add'>+</li> </ul> </li>", map: { defer: "entries" } }
Zweitens müssen Sie das Klickereignis des Add-Objekts abhören und das Hinzufügen des Objekts im Listener abschließen.
Item: { // css, xml, map 项同前 fun: function (sys, items, opts) { var data, open; sys.item.on("click", "//*[@id='add']", function () { var stuff = {name: 'new stuff'}; data.children.push(stuff); sys.add.before("Item").value().val(stuff); }); // 其余代码同前 } }
Hier ist zu beachten, dass die Listening-Methode für das Add-Objekt nicht direkt verwendet werden kann: sys.add.on("click",...), aber die Proxy-Methode sollte verwendet werden, andernfalls wird ein Fehler gemeldet. Da es sich bei der übergeordneten Komponente um eine verzögert instanziierte Komponente handelt, ist das Add-Objekt erst sichtbar, wenn das Einträge-Objekt instanziiert wird.
Vollständige Baumkomponente
Basierend auf dem obigen Inhalt wird nun eine vollständige Version der Baumkomponente gegeben:
Tree: { css: `#tree { font-family: Menlo, Consolas, monospace; color: #444; } #tree, #tree ul { padding-left: 1em; line-height: 1.5em; list-style-type: dot; }`, xml: `<ul id='tree'> <Item id='item'/> </ul>`, fun: function (sys, items, opts) { return items.item; } }, Item: { css: "#item { cursor: pointer; }", xml: `<li id='item'> <p id='content'> <span id='neme'/><span id='expand'/> </p> <ul id='entries'> <li id='add'>+</li> </ul> </li>`, map: { defer: "entries" }, fun: function (sys, items, opts) { var data, open; sys.item.on("click", "//*[@id='add']", function () { var stuff = {name: 'new stuff'}; data.children.push(stuff); sys.add.before("Item").value().val(stuff); }); sys.expand.on("click", function () { open = !open; sys.expand.text(open ? " [-]" : " [+]"); open ? (sys.entries.show() && load()) : sys.entries.hide(); }); function load() { if ( sys.entries.children().length == 1 ) for ( var item of data.children ) sys.add.before("Item").value().val(item); } function val(value) { data = value; sys.neme.text(data.name); data.children && data.children.length && sys.expand.show().text(" [+]"); } return { val: val }; } }
Die Baumkomponente in tatsächlichen Anwendungen wird funktionaler sein als hier. Sie können sie basierend auf dem obigen Code weiter verbessern, z. B. indem Sie einige ICON-Symbole hinzufügen, Unterelemente ziehbar machen usw. Es ist jedoch sehr wichtig, den Code während des Verbesserungsprozesses so weit wie möglich zu komplizieren. Es ist notwendig, einen Teil des Codes entsprechend zu entfernen und in Komponenten zu kapseln.
Diese Artikelserie basiert auf dem xmlplus-Framework. Wenn Sie nicht viel über xmlplus wissen, können Sie www.xmlplus.cn besuchen. Eine ausführliche Dokumentation zu den ersten Schritten finden Sie hier.
【Verwandte Empfehlungen】
1. Kostenloses JS-Online-Video-Tutorial
2. JavaScript Chinese Reference Manual
3. php.cn Dugu Jiujian (3) – JavaScript-Video-Tutorial
Das obige ist der detaillierte Inhalt vonEinführung in die Komponenten des JavaScript-Frameworks (xmlplus) (Neun) Baum (Baum). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Viele Benutzer stoßen beim Spielen einiger Spiele unter Win10 immer auf Probleme, wie z. B. ein Einfrieren des Bildschirms und unscharfe Bildschirme. Zu diesem Zeitpunkt können wir das Problem lösen, indem wir die Directplay-Funktion aktivieren, und die Bedienungsmethode der Funktion ist ebenfalls sehr einfach. So installieren Sie DirectPlay, die alte Komponente von Win10 1. Geben Sie „Systemsteuerung“ in das Suchfeld ein und öffnen Sie es. 2. Wählen Sie große Symbole als Anzeigemethode. 3. Suchen Sie nach „Programme und Funktionen“. 4. Klicken Sie links, um oder zu aktivieren Win-Funktionen ausschalten 5. Wählen Sie hier die alte Version aus. Aktivieren Sie einfach das Kontrollkästchen

Vue ist ein sehr beliebtes Front-End-Framework. Es bietet viele Tools und Funktionen wie Komponentisierung, Datenbindung, Ereignisbehandlung usw., die Entwicklern beim Erstellen effizienter, flexibler und einfach zu wartender Webanwendungen helfen können. In diesem Artikel werde ich vorstellen, wie man eine Kalenderkomponente mit Vue implementiert. 1. Anforderungsanalyse Zunächst müssen wir die Anforderungen dieser Kalenderkomponente analysieren. Ein einfacher Kalender sollte über die folgenden Funktionen verfügen: Anzeige der Kalenderseite des aktuellen Monats; Unterstützung des Wechsels zum vorherigen oder nächsten Monat; Unterstützung beim Klicken auf einen bestimmten Tag;

Vue ist derzeit eines der beliebtesten Front-End-Frameworks, und VUE3 ist die neueste Version des Vue-Frameworks. Im Vergleich zu VUE2 bietet VUE3 eine höhere Leistung und ein besseres Entwicklungserlebnis und ist für viele Entwickler zur ersten Wahl geworden. In VUE3 ist die Verwendung von Erweiterungen zum Erben von Komponenten eine sehr praktische Entwicklungsmethode. In diesem Artikel wird erläutert, wie Erweiterungen zum Erben von Komponenten verwendet werden. Was heißt erweitert? In Vue ist Extends ein sehr praktisches Attribut, das für untergeordnete Komponenten verwendet werden kann, um von ihren Eltern zu erben.

Die alten Win10-Komponenten müssen vom Benutzer selbst aktiviert werden, da viele Komponenten standardmäßig geschlossen sind. Der Vorgang ist sehr einfach Versionskomponenten? Öffnen 1. Klicken Sie auf Start und dann auf „Win-System“. 2. Klicken Sie, um die Systemsteuerung aufzurufen. 3. Klicken Sie dann auf das Programm unten. 4. Klicken Sie auf „Win-Funktionen aktivieren oder deaktivieren“. 5. Hier können Sie auswählen, was Sie möchten öffnen

Das Standardanzeigeverhalten für Komponenten im Angular-Framework gilt nicht für Elemente auf Blockebene. Diese Designwahl fördert die Kapselung von Komponentenstilen und ermutigt Entwickler, bewusst zu definieren, wie jede Komponente angezeigt wird. Durch explizites Festlegen der CSS-Eigenschaft display kann die Anzeige von Angular-Komponenten vollständig gesteuert werden, um das gewünschte Layout und die gewünschte Reaktionsfähigkeit zu erreichen.

Wie kann man bei der Entwicklung von Vue/React-Komponenten in VSCode eine Vorschau der Komponenten in Echtzeit anzeigen? Dieser Artikel stellt Ihnen ein Plug-in für die Echtzeitvorschau von Vue/React-Komponenten in VSCode vor. Ich hoffe, es wird Ihnen hilfreich sein!

Wie rendert Vue Komponenten dynamisch über JSX? Der folgende Artikel stellt Ihnen vor, wie Vue Komponenten mithilfe von JSX effizient dynamisch rendern kann. Ich hoffe, er wird Ihnen hilfreich sein!

Vue-Komponentenpraxis: Einführung in die Entwicklung von Paging-Komponenten In Webanwendungen ist die Paging-Funktion eine wesentliche Komponente. Eine gute Paginierungskomponente sollte einfach und klar in der Darstellung sein, reich an Funktionen und leicht zu integrieren und zu verwenden sein. In diesem Artikel stellen wir vor, wie Sie mit dem Vue.js-Framework eine hochgradig anpassbare Paging-Komponente entwickeln. Wir erklären anhand von Codebeispielen ausführlich, wie man mit Vue-Komponenten entwickelt. Technologie-Stack Vue.js2.xJavaScript (ES6) HTML5- und CSS3-Entwicklungsumgebung
