11
votes

Comment passer du contenu d'un modèle à une mise en page dans Express?

J'ai un serveur Express de base: xxx

avec une mise en page de base de jade: xxx

et une page simple: xxx

(dans les rails, cela pourrait être quelque chose comme content_for ou une variable d'instance simple.)


1 commentaires

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


6 Réponses :


0
votes

transmettez-le dans les locaux: {certains: 'locaux', pagetertitle: "Bienvenue!"}


1 commentaires

Je n'ai pas locaux de ce modèle. Je devrais conserver une carte de {chemin de modèle: page titre} et recherchez le titre de la page avant de rendu. Il doit y avoir un moyen de le spécifier de dans le modèle lui-même.



5
votes

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-

Les locaux passés sont disponibles pour la mise en page et la vue de la page si


1 commentaires

L'idée serait donc d'ajouter une aide dynamique qui stocke pagetitle 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!



19
votes

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()
        });


2 commentaires

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.



1
votes

Vous pouvez le faire en utilisant ce petit extrait.

prop.js: xxx

serveur.js: xxx


vue: xxx

mise en page: xxx


0 commentaires

2
votes

Layout.jade xxx

page.jade xxx

facile paaby.


0 commentaires

0
votes

pour express 3 template agnostique, fonctionne bien avec express-partiels xxx


0 commentaires