xmlplus ist ein JavaScriptFramework für die schnelle Entwicklung von Front-End- und Back-End-Projekten. In diesem Artikel wird hauptsächlich das Routing der xmlplus-Komponentendesignreihe vorgestellt, das einen gewissen Referenzwert hat. Auf der Browserseite ist das Verständnis des Routings allgemein Schließt den Seitenwechsel basierend auf verschiedenen URLs ab. Auf der Serverseite werden relevante Seiten basierend auf unterschiedlichen URL-Anfragen zurückgemeldet. In diesem Kapitel definieren wir Komponenten-Routing im weitesten Sinne: Entsprechend den verschiedenen empfangenen Befehlen präsentiert das Komponenten-
-Objektverschiedene untergeordnete Seiten. Hier stellen wir eine Routing-bezogene Komponente vor, nämlich den Ansichtsstapel ViewStack.
Vorläufiger Ansichtsstapel
Diese Komponente ist bereits im letzten Kapitel des Abschnitts „Dokumentation“, „Verzögerte Instanziierung“, erschienen. Einige Details werden hier erläutert. Der Quellcode dieser Komponente ist weiter unten noch einmal angegeben.
ViewStack: { xml: "<p id='viewstack'/>", fun: function (sys, items, opts) { var args, children = this.children(), table = children.call("hide").hash(), ptr = table[opts.index] || children[0]; if (ptr) ptr = ptr.trigger("show").show(); this.on("switch", function ( e, to ) { table = this.children().hash(); if ( !table[to] || table[to] == ptr ) return; e.stopPropagation(); args = [].slice.call(arguments).slice(2); ptr.trigger("hide", [to+''].concat(args)).hide(); ptr = table[to].trigger("show", [ptr+''].concat(args)).show(); }); return Object.defineProperty({}, "selected", { get: function() {return ptr;}}); } }
-Schnittstelle ermöglicht diese Komponente die Bereitstellung eines statischen Parameterindex, der der Name eines untergeordneten Komponentenobjekts der Komponente ViewStack ist. which is used Gibt an, welche untergeordnete Komponente zuerst gerendert wird. Siehe das Beispiel unten.
In diesem Beispiel enthält ViewStack einenExample1: { xml: `<ViewStack index='bar'> <button id='foo'>foo</button> <button id='bar'>bar</button> </ViewStack>` }
-Index mit dem Wert bar, der angibt, dass bei der Instanziierung der Komponente zuerst die Objektleiste der Komponente gerendert wird. Standardmäßig wird die erste untergeordnete Komponente dieser Komponente als anfängliches Anzeigeobjekt verwendet. Betrachtet man die dynamische Schnittstelle, exportiert das -Funktionselement der Komponente ein schreibgeschütztes Attribut mit dem Namen „selected“, das zur Angabe des aktuell angezeigten untergeordneten Komponentenobjekts verwendet wird.
Zielkomponentenobjekt durch Ereignisse wechseln
Zum Umschalten zwischen untergeordneten Komponentenobjekten exportiert das Funktionselement der Komponente nicht die relevante Schnittstelle, sondern Switching wird durch den Empfang des Switch-Ereignisses abgeschlossen. Siehe das Beispiel unten.
Example2: { xml: "<ViewStack id='viewstack'>\ <button id='foo'>foo</button>\ <button id='bar'>bar</button>\ </ViewStack>" fun: function (sys, items, opts) { sys.viewstack.on("click", "*", function(e) { var to = this + '' == "foo" ? "bar" : "foo", data = "hello, world"; this.trigger("switch", [to, data]); }); sys.foo.on("show", function (e, prev, data) { console.log("previous page is " + prev, "from data is " + data); }); sys.bar.on("hide", function (e, prev, data) { console.log("previous page is " + prev, "from data is " + data); }); } }
Die Komponente ViewStack unterstützt das dynamische Hinzufügen und Entfernen von untergeordneten Komponentenobjekten, siehe unten ein Beispiel.
Example3: { xml: "<ViewStack id='viewstack'>\ <button id='foo'>foo</button>\ </ViewStack>" fun: function (sys, items, opts) { var xml = "<button id='bar'>bar</button>"; sys.viewstack.append(xml).trigger("switch", "bar"); } }
Die Komponente ViewStack wird im Allgemeinen in Verbindung mit der verzögerten Instanziierungsfunktion der Komponente verwendet. Bei einigen komplexeren Komponenten kann dies dazu beitragen, die Anzeige der Startseite der Anwendung zu beschleunigen. Hier ist eine einfache Demonstration.
Example4: { xml: `<ViewStack> <button id='foo'>foo</button> <button id='bar'>bar</button> <button id='alice'>alice</button> </ViewStack>` map: { defer: "bar alice" } }
HTML5History API
Hier sehen wir uns an, wie man die Komponente ViewStack zum Laufen bringt HTML5 Wird in Verbindung mit der History-API verwendet. Unten finden Sie ein einfaches Beispiel.
Example5: { xml: `<ViewStack id='example'> <button id='foo'>foo</button> <button id='bar'>bar</button> <button id='alice'>alice</button> </ViewStack>`, fun: function (sys, items, opts) { sys.example.on("show", "button", function (e, prev) { window.history.pushState({name: this + ""}, null, "/" + this); }); window.addEventListener("popstate", function(e) { sys.example.trigger("switch", e.state.name); }); } }
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-TutorialJavaScript-Referenzhandbuch für Chinesischphp.cn Dugu Jiujian (3) – JavaScript-Video-TutorialDas obige ist der detaillierte Inhalt vonEinführung in die Komponenten des JavaScript-Frameworks (xmlplus) (7) Routing (ViewStack). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!