J'utilise le handlebars.js hbs wrapper dans express.js. J'ai des modèles qui fonctionnent bien, mais j'ai besoin d'ajouter des partiels pour être rendu avec mes vues.Module hbs Express.js - enregistrer les partiels depuis le fichier .hbs
Je voudrais faire quelque chose comme ceci:
hbs.registerPartial('headPartial', 'header');
// where "header" is an .hbs file in my views folder
Cependant, il est de lancer une « tête partielle ne peut être trouvée ».
Je peux faire fonctionner le registrePartial si je passe une chaîne de caractères html au second paramètre, mais je voudrais utiliser des fichiers de vue séparés pour mes partiels.
Je n'ai trouvé aucune documentation à ce sujet, mais j'espère que quelque chose me manquera.
Est-ce que quelqu'un sait comment utiliser les fichiers view dans la méthode registerPartial? Si oui, comment puis-je l'implémenter?
MISE À JOUR
Pour donner plus de contexte, permettez-moi d'ajouter plus de code. Voici mon fichier "serveur" - app.js
var express = require('express')
, routes = require('./routes')
, hbs = require('hbs');
var app = module.exports = express.createServer();
// Configuration
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'hbs');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
// this is the line that generates the error
hbs.registerPartial('headPartial', 'header');
// What I'm expecting is for "headPartial" to be a compiled template partial
// of the template within views/header.hbs, but it is not loading this way.
// If I do something like hbs.registerPartial('headPartial', '<p>test</p>');
// then it does work. I need to know how to pass an .hbs file to the
// registerPartial method.
// Routes
app.get('/', routes.index);
app.listen(3000);
Et voici mon fichier routes.index:
exports.index = function(req, res){
res.render('index', { title: 'Express' })
};
Dans mon dossier vues, j'ai trois modèles:
views/
header.hbs (this is my partial)
index.hbs
layout.hbs
Dans mon fichier index.hbs, j'appelle la partie 'headPartial' partielle avec:
{{> headPartial}}
Toute aide est grandement appréciée.
Nice. Un moyen rapide d'avoir tous les partiels disponibles en cas de besoin! – swatkins
Merci Ben, cela m'a beaucoup aidé. – Dave