Wir erklären Ihnen ausführlich, wie Sie die leichte JavaScript-Vorlagen-Engine von Mustache.j verwenden.
Einfaches Beispiel
function show(t) { $("#content").html(t); } var view = { title: 'YZF', cacl: function () { return 6 + 4; } }; $("#content").html(Mustache.render("{{title}} spends {{cacl}}", view));
Sie können die Syntax der Mustache-Vorlage deutlich erkennen. Sie müssen sie nur mit {{ und }} einbinden und den Namen des Objekts einfügen.
Aus diesem Beispiel geht auch hervor, dass, wenn das angegebene Attribut eine Funktion ist, der Inhalt der Funktion nicht ausgegeben wird. Stattdessen wird die Funktion zuerst ausgeführt und dann das zurückgegebene Ergebnis angezeigt.
HTML-Tags nicht maskieren
var view = { name: "YZF", company: "<b>ninesoft</b>" }; show(Mustache.render("{{name}} <br /> {{company}} <br />{{{company}}}<br/>{{&company}}", view));
Wie Sie diesem Beispiel entnehmen können, maskiert Mustache standardmäßig die HTML-Tags im Wert, aber manchmal brauchen wir das nicht.
Hier können wir also {{{ und }}} verwenden, um es einzubinden, oder {{ und }}, um es einzuschließen, dann entkommt Mustache den darin enthaltenen HTML-Tags nicht.
Binden Sie den Wert der Unterimmobilie
var view = { "name": { first: "Y", second: "zf" }, "age": 21 }; show(Mustache.render("{{name.first}}{{name.second}} age is {{age}}", view));
Ich glaube, wenn man das erste Beispiel sieht, wird jemand darüber nachdenken, ob man Untereigenschaften binden kann, wenn man genau hinschaut. Herzlichen Glückwunsch, jetzt können Sie Ihre Anforderungen erfüllen. Nutzen Sie einfach die Untereigenschaft über .
Bedingte Auswahl, ob das angegebene Teil gerendert werden soll
var view = { person: false }; show(Mustache.render("eff{{#person}}abc{{/person}}", view));
Wenn wir immer noch in der Lage sein müssen, anhand des von uns angegebenen Werts zu entscheiden, ob ein bestimmtes Teil gerendert werden soll, können wir dieses Problem natürlich auch jetzt lösen nicht nur false, was dazu führt, dass der angegebene Teil nicht gerendert wird.
null, leeres Array, 0, leere Zeichenfolge sind gleichermaßen gültig. Die Syntax ist relativ einfach. Verwenden Sie einfach {{#key}} ... {{/key}}, um den Inhalt in der Mitte zu steuern.
Schleifenausgabe
var view = { stooges: [ { "name": "Moe" }, { "name": "Larry" }, { "name": "Curly" } ] }; show(Mustache.render("{{#stooges}}{{name}}<br />{{/stooges}}", view));
Lernen Sie einfach die obige Methode und Sie werden die meisten Probleme lösen, aber es wird immer noch Probleme geben. Wenn Sie eine nach der anderen schreiben, wird es meiner Meinung nach sehr irritierend sein wird uns nicht im Stich lassen, es zeigt auch, wie man die Ausgabe in einer Schleife durchführt. Hier geben wir ein Array aus, das aus Objekten besteht, wir müssen {{.}} anstelle von {{name}} verwenden.
Schleife und gebe den nach der Verarbeitung durch die angegebene Funktion zurückgegebenen Wert aus
var view = { "beatles": [ { "firstname": "Johh", "lastname": "Lennon" }, { "firstname": "Paul", "lastname": "McCartney" } ], "name": function () { return this.firstname + this.lastname; } }; show(Mustache.render("{{#beatles}}{{name}}<br />{{/beatles}}", view));
Die Schleifenausgabe ist verfügbar, aber wir möchten sie später noch verarbeiten. Dann entspricht dies vollständig Ihren Anforderungen, da Mustache die Werte im Array an Ihre Funktion übergibt und den von Ihrer Funktion zurückgegebenen Wert ausgibt. Hier können wir sehen, dass die äußerste Ebene ein Array ist. Solange eine Funktion darin verwendet wird, wird das äußere Array als Parameter dieser Funktion übergeben.
Benutzerdefinierte Funktion
var view = { "name": "Tater", "bold": function () { return function (text, render) { return render(text) + "<br />"; } } } show(Mustache.render("{{#bold}}{{name}}{{/bold}}", view));
Wir haben oben alle Variablen als Abschnitte verwendet. Welchen Effekt hat es also, wenn wir jetzt Funktionen als Abschnitte verwenden?
Es ruft die von unserer Funktion zurückgegebene Funktion auf, wobei die ursprüngliche Zeichenfolge in der Mitte des Abschnitts als erster Parameter und der Standardinterpreter als zweiter Parameter verwendet werden. Anschließend können wir sie selbst verarbeiten.
Antonym-Festival
var view = { "repos": [] }; show(Mustache.render("{{#repos}}{{.}}{{/repos}}{{^repos}}no repos{{/repos}}", view));
Wir haben auch die oben genannten Abschnitte verwendet, aber wir können nur auswählen, ob ein bestimmter Teil ausgegeben werden soll. Also hier machen wir das wieder gut.
Wenn wir {{^ und }} verwenden, um einen Abschnitt zu definieren, wird dieser Teil nur angezeigt, wenn der darin enthaltene Wert leer, null, ein leeres Array oder eine leere Zeichenfolge ist. Dann können wir den Effekt von if else erzielen.
Einige Vorlagen
var view = { names: [ { "name": "y" }, { "name": "z" }, { "name": "f" } ] }; var base = "<h2>Names</h2>{{#names}}{{>user}}{{/names}}"; var name = "<b>{{name}}</b>"; show(Mustache.render(base, view, { user: name }));
Obwohl Moustache viel Zeit spart, haben wir viele Vorlagen definiert, diese können jedoch nicht verschachtelt und ineinander verwendet werden, was es auch umständlich macht.
Deshalb stellen wir hier auch vor, wie man einige Vorlagen für die Verwendung in anderen Vorlagen definiert. Die Möglichkeit, andere Vorlagen hier zu verwenden, ist einfach {{>templetename}}.
Der größte Unterschied besteht darin, dass die Mustache.render-Methode einen dritten Parameter hat.
Vorkompilierte Vorlagen
Mustache.parse(template); //其他代码 Mustache.render(template,view);
Während Vorlagen Vor- und Nachteile haben. Das Kompilieren der Vorlage nimmt nur Zeit in Anspruch. Wenn wir also wissen, dass wir eine bestimmte Vorlage verwenden werden, können wir die Vorlage für die spätere Verwendung vorkompilieren.
Ich hoffe, dass dieser Artikel zum Lernen aller beitragen wird.