Escape doppelte Klammern {{...}} in Moustache-Vorlage. (Templating einer Vorlage in NodeJS)
Ich versuche, die Vorlage-eine Vorlage, wie unten:
{{{
{
"name" : "{{name}}",
"description" : "{{description}}"
}
}}}
{{{debug this}}}
<h1>{{name}}</h1>
Wo ich will triple Klammern zu bleiben, aber doppelte Klammern ersetzt werden, die JSON übergeben. Wer weiß, der beste Weg, dies zu tun ohne das schreiben von post-Prozess JS-code, und wenn nicht, ist es eine gute nodeJS template-engine für diese Art von Szenario?
Kommentar zu dem Problem - Öffnen
Gibt es einen guten Grund tun Sie dies? Es scheint ein bisschen kompliziert! Vielleicht können Sie erzielen, Sie es einen anderen Weg?
Ich bin die Schaffung eines CLI-build/scaffold-generator für ein javascript-framework, also würde ich gerne Vorlagen für ein Teil, dass...
Haben Sie schaute auf die grunt-init templating-system, das hilft bei der Entwicklung von templates wie diesem? . Yeoman ist auch etwas ähnliches macht. Hoffentlich wird es nehmen einige der Schmerzen aus dem Gebäude einen generator wie diesen. So weit wie LENKER, es sieht nicht wie es ist ein Weg, um zu ändern Trennzeichen, aber es ist eine option escape Baujahr laut, dieses Problem github.com/wycats/handlebars.js/issues/146. Viele andere Systeme (mustache, underscore, etc) zulassen für ändern delimeters.
InformationsquelleAutor der Frage Nick Jonas | 2012-12-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einschalten können Sie Trennzeichen, um etwas, das nicht in Konflikt mit dem triple Schnurrbärte, wie erb-style-tags:
Beachten Sie, dass Sie können dies tun, so oft wie Sie möchten während Ihrer Vorlage. Jedes mal, wenn Sie in etwas laufen, dass Konflikte, wählen Sie einen neuen Satz von Trennzeichen 🙂
InformationsquelleAutor der Antwort bobthecow
Wie beschrieben in diese Frage LENKER nicht unterstützt ändern der Trennzeichen. Aber Sie kann entkommen, der doppelten geschweiften Klammern mit einem backslash wie diese:
HTML:
InformationsquelleAutor der Antwort tmuecksch
Können Sie auch zuweisen
Mustache.tags = ["[[", "]]"];
vor Ihrer Vorlage Zusammenstellung.http://jsfiddle.net/fhwe4o8k/1/
z.B.
InformationsquelleAutor der Antwort Christopher Marshall
andere Möglichkeit ist, erstellen Sie einen Helfer für bestens geschweiften Klammern.
und dann im template wie dieses:
die dann Ausgänge:
InformationsquelleAutor der Antwort Austin Haws
Ich wollte nur etwas anderen Ansatz. Ich habe versucht, einige andere Möglichkeiten, und hier sind einige Dinge, die ich nicht an Ihnen mag:
{{obj.property}}
Klammern etwas anderes ist eine schlechte Idee. Vor allem weil, sobald Sie beginnen, die Verwendung von Drittanbieter-Komponenten, die nicht bewusst sind, Sie nicht-standard-Winkel-Konfiguration, - Bindungen in diesen Dritten Teil der Komponenten wird aufhören zu arbeiten. Erwähnenswert ist auch, dass AngularJS-team scheint nicht zu wollen, gehen den Weg dass mehrere verbindliche Notationen, überprüfen dieses ProblemOk keine meine Antwort:
Wenn Sie mit NodeJS und Express sollten Sie die folgenden:
Ersetzen Bindungen
{{}}
in Ihrer eckigen Teil mit so etwas wie{[{}]}
(oder etwas ganz einzigartiges)Nun in Sie der route hinzufügen einer callback-Funktion an, die Sie render-Methode:
Dies sollte Ihnen ermöglichen, zu verwenden Schnurrbart zusammen mit AngularJS. Eine Verbesserung, die Sie tun können, ist zu extrahieren, die Methode in ein separates Modul zur Wiederverwendung über alle Routen.
InformationsquelleAutor der Antwort Vitalij
Dies ist eine gute Lösung, die ich gefunden habe, für diese Art von problem, wo Sie können leicht schalten Sie Trennzeichen in den template-Einstellungen in der runtime:
http://olado.github.com/doT/
Können Sie die RegEx-Einstellungen wie folgt:
InformationsquelleAutor der Antwort Nick Jonas