J'ai un serveur Express de base: avec une mise en page de base de jade: p> et une page simple: p > (dans les rails, cela pourrait être quelque chose comme content_for code> ou une variable d'instance simple.) p> p>
6 Réponses :
transmettez-le dans les locaux: {certains: 'locaux', pagetertitle: "Bienvenue!"} code> p>
Je n'ai pas locaux code> de ce modèle. Je devrais conserver une carte de
{chemin de modèle: page titre} code> et recherchez le titre de la page avant de rendu. Il doit y avoir un moyen de le spécifier de dans i> le modèle lui-même.
Express n'a pas de notion préconçue de "blocs" ou autre qu'elles appellent cela dans des rails, mais vous pouvez utiliser une combinaison d'assistants () et dynamichelpers () pour atteindre quelque chose de similaire http://expressjs.com/guide.htm#app-helpers-obj- p>
Les locaux passés sont disponibles pour la mise en page et la vue de la page si p>
L'idée serait donc d'ajouter une aide dynamique qui stocke pagetitle code> dans la demande, que la mise en page peut alors lire? Cela ressemble à une solution fine. Je pourrais même le terminer comme un middleware et le publier!
En utilisant la pointe ci-dessus à propos dynamicHelpers, et la magie de la fermeture, j'ai trouvé une solution assez élégante qui fonctionne sans impliquer l'objet de la demande. L'astuce consiste à envelopper la variable de titre dans une fermeture qui fournit un get () et la fonction set () autour d'elle, et faire l'objet d'emballage le résultat de l'assistant dynamique page_title.
Créer un property.js: méthode p>
var property = require("./property.js"); app.dynamicHelpers ({ page_title: property.creator() });
L'une des utilisations les plus pratiques des fermetures que j'ai rencontrées!
Comment avez-vous utilisé cela dans la vue? J'aime cette idée, mais pour moi, la fonction Set () n'est jamais appelée et obtenez () est toujours nulle.
Vous pouvez le faire en utilisant ce petit extrait.
prop.js: p> serveur.js: p> vue: p> mise en page: p>
Layout.jade page.jade p> facile paaby. p> p>
pour express 3 template agnostique, fonctionne bien avec express-partiels code>
Bien que ce soit un CMS basé sur DOCPAD, vous le trouverez peut-être utile car il a construit un soutien aux mises en page et aux jades. Github.com/ballupton/docpad