Frage

In meinem ./inc/footer.jade Ich habe eine Menge Skript-Tags.Ich würde gerne zusätzliches Skript bereitstellen nur auf einer bestimmten Route. Wie erreicht man das?

In Controllern könnte ich Folgendes tun:

res.render('someTemplate', {
  extraScript: true
});

und in footer.jade

- if (extraScript)
  <script src="/script.js"></script>

aber dann müsste ich diese 'extraScript'-Variable in jede einzelne Route einbinden (auf false setzen).

War es hilfreich?

Lösung

Sie können verwenden typeof um zu prüfen, ob eine Variable existiert.

- if (typeof extraScript !== 'undefined')
  <script src="/script.js"></script>

Auf diese Weise werden alle Routen, die das zusätzliche Skript nicht benötigen, einfach nicht übergeben extraScript, und dann in der Vorlage, typeof extraScript !== undefined ausgewertet wird false.

Andere Tipps

Die extraScript-Lösung funktioniert, aber ich glaube, eine bessere Lösung wäre die Verwendung der Vorlagenvererbung (Blockierungs- und Erweiterungsschlüsselwörter).Auf diese Weise müssen Sie Ihren Vorlagen keine Logik und keine lokale Variable hinzufügen und können die Dinge in Ihrem Jade-Markup trotzdem trocken halten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top