Jade:Bereitstellung routenspezifischer Ressourcen
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).
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.