Node.js+;快速-如何让胡子部分工作?

Node.js+;快速-如何让胡子部分工作?,node.js,express,mustache,Node.js,Express,Mustache,我正试图让小胡子在Express中正常工作,大家可以猜到,我遇到了麻烦 下面这行初始化了漂亮干净的小胡子。变量按预期呈现 app.register('html', require(__dirname+'/public/js/libs/mustache.js')); 然而,当混合中加入partials时,问题开始出现。对于Mustache,这个部分应该调用header view/partial {{> header}} 但是,唉,什么也没发生。:/即使我直接提供部分,Mustach也无法

我正试图让小胡子在Express中正常工作,大家可以猜到,我遇到了麻烦

下面这行初始化了漂亮干净的小胡子。变量按预期呈现

app.register('html', require(__dirname+'/public/js/libs/mustache.js'));
然而,当混合中加入partials时,问题开始出现。对于Mustache,这个部分应该调用header view/partial

{{> header}}
但是,唉,什么也没发生。:/即使我直接提供部分,Mustach也无法呈现它

app.get('/', function(req, res) {
    res.render('welcome', {
        partials: {
            header: '<h1>Header</h1>'           
        }
    });
});
app.get('/',函数(req,res){
res.render(‘欢迎’{
部分:{
标题:“标题”
}
});
});
所以,看来这些部分根本不起作用。我发现了一个让partials起作用的hack:

之后,当在render调用(参见上文)中直接提供部分时,部分将进行渲染,但仍然无法将部分直接渲染到视图/布局:

布局如下所示:

Behold, the header
{{> header}}
<p>Let's move to more important stuff...</p>
<h1>Header</h1>
看,标题
{{>头}
让我们转到更重要的事情

标题视图如下所示:

Behold, the header
{{> header}}
<p>Let's move to more important stuff...</p>
<h1>Header</h1>
标题

Express可以自己加载视图,但它不知道如何处理胡须部分…

我不确定您的
/public/js/libs/Mustache.js
中到底有什么内容。。。我使用npm+模板对象的变体中的mustache模块

在任何情况下,传递给
app.register
的对象都需要在某个时候调用
mustache.to_html(模板、局部变量、局部变量)


您需要将partials对象作为第三个参数传递给mustache的
to_html

以便在最新版本的hogan express中使用它

所需要的只是安装hogan express并将其用作express上的模板引擎。无需黑客攻击或调整。

使用express(至少版本3),您可以像往常一样使用以大于号开头的双胡须加载片段

首先考虑以下内容在我们的<代码> App.js<代码>文件中:

/**导入模块*/
从“mustache express”导入胡须;
/**查看引擎设置*/
app.engine('mst',mustache());
应用程序集(“查看引擎”、“mst”);
app.set('views',path.join('mvc/views');
/**我们将在其中显示分部的路线*/
应用程序获取(“/”,(请求,请求)=>{
让视图={
标题:"网页",,
// ...
};
/**我们将使用名为template.mst的文件进行渲染*/
res.render(“模板”,视图);
});
任何以大于号开头的双胡子(即
{{{>file}}
)都将被视为一个大胡子。分部中的文件将在运行时呈现。考虑这个文件是我们要插入的部分:

mvc/views/partial.mst

418 |我是个茶壶
这是我们的模板:

mvc/views/template.mst

template.mst文件
{{>部分}

对您的做法或遇到的问题有进一步的评论吗?将某人的流程再引导一点;)(然后我将投票)我所做的只是安装hogan express并将其用作express上的模板引擎。:)无需黑客或调整。