很想知道基于快速渲染变量使用把手部分的最佳方法

时间:2014-03-25 01:41:12

标签: node.js express render handlebars.js

所以我想知道在设置渲染变量时,在Express中加载Handlebars Partial的最佳方法是什么。

app.get('/raves-reviews/corporate-clients', function (req, res) {
    res.render('raves-reviews.html', {  //This of this a micro layout
        layout: 'main',           //this is the main layout
        title: 'Raves & Reviews',
        corporate: true,          //this is part of idea 1
        page: 'corporate-clients' //this is part of idea 2 and 3
    });
});

因此,当用户访问mysite.com/raves-reviews/corporate-clients时,Handlebars将首先加载主布局,我已使用导航设置该布局以显示主页滑块或raves-review滑块如果它不是主页。

然后它会加载raves-reviews.html页面,这只是一个把我重命名为.html扩展名的把手文件,它将是一个可容纳4个其他页面的微模板。

我不想做的是使用相同的raves-reviews.html微模板制作4页,并且必须将每个其他页面都包含为部分。我宁愿制作一个能够处理所需部分的页面,就像主要布局与网站中的每个其他页面一样。

所以想法1是在raves-reviews.html

中创建4个{{#if}}块
{{#if page1}}
    {{> page1}}
{{/if}}
{{#if page2}}
    {{> page2}}
{{/if}}
{{#if page3}}
    {{> page3}}
{{/if}}
{{#if page4}}
    {{> page41}}
{{/if}}

所以想法2是使用我在这里找到的帮助器:Logical operator in a handlebars.js {{#if}} conditional来创建页面,但我确实在那里读到把手被认为没有逻辑。所以我不确定这是否是一个很好的方法,可以将逻辑调用到一个设计用于没有逻辑的模板系统中。

创意3是为了看看是否有办法在app.get中使用页面变量来创建局部,但我不是百分之百确定如何将它拉下来。我最初的想法是:

{{> {{page}} }}

如果还有其他方式,我对任何其他想法完全开放。谢谢大家。

1 个答案:

答案 0 :(得分:3)

你应该选择1,因为你已经做到了