Express.js和Mustache中的局部渲染

Express.js和Mustache中的局部渲染,express,mustache,Express,Mustache,我正试图在express.js中加载一个胡须部分,但显然我遇到了一些麻烦。在包含视图部分文件的情况下,是否可以采取如下EJS方法: 我有一个名为index.html的模板文件 <html> <head> <title>My Title</title> </head> <body> {{>header}} </body> </html&g

我正试图在express.js中加载一个胡须部分,但显然我遇到了一些麻烦。在包含视图部分文件的情况下,是否可以采取如下EJS方法:

我有一个名为index.html的模板文件

<html>
    <head>
        <title>My Title</title>
    </head>
    <body>
        {{>header}}
    </body>
</html>

我在这方面是个新手,但我想以某种方式将header.mustach的全部内容呈现或读取到header对象。这可能吗?

看看下面的链接,它可能会解释如何使用express.js设置胡须

现在,为了能够从外部文件加载部分,请将tmpl.compile修改为

compile : function(source, options) {
    var views = options.views || './views';
    var extension = options.extension || '.html';

    if (typeof source == 'string') {
        return function(options) {
            options.locals = options.locals || {};
            options.partials = options.partials || {};

            if (options.body) // for express.js > v1.0
                locals.body = options.body;

            for(var p in options.partials) {
                var partialFileName = views + '/' + options.partials[p] + extension;

                if(path.existsSync(partialFileName)) {
                    options.partials[p] = fs.readFileSync(partialFileName, "utf-8");
                }
            }               
            return mustache.to_html(source, options.locals, options.partials);
        };
    } else {
        return source;
    }
}
您还需要添加以下两条require语句

var fs = require("fs"),
var path = require("path");
此更改假定您的分部位于
视图
目录中,并以扩展名
.html
结尾(例如,您可能希望将分部的扩展名更改为.html或相应地调整上述代码)

现在,您可以使用以下方法进行部分渲染

app.get('/', function(req, res) {
    res.render('signup.html', {
        partials: {
            header: 'header'   //this now works :)
        }
    });
});

线路错了吗?发生了什么事?你收到错误消息了吗?是的,partial('header.mustache')返回一个错误,那么错误消息是什么?哦,它基本上说Object#没有“partial”方法。我不确定渲染部分文件的正确方法是什么。您使用哪个库来渲染胡子?如果是,则必须调用
Mustache.render
var fs = require("fs"),
var path = require("path");
app.get('/', function(req, res) {
    res.render('signup.html', {
        partials: {
            header: 'header'   //this now works :)
        }
    });
});