Node.js Express把手如何在没有模板的情况下将.hbs包含在另一个.hbs中

时间:2019-02-14 15:05:02

标签: node.js express handlebars.js express-handlebars

如何将.hbs包含在没有模板的其他.hbs中?我正在为Express的Nodejs使用基于组件的体系结构,我需要在文件中包含hbs文件,以便在html和js双方都使用{{values}},而无需进行任何重复和清理。

我尝试像这样使用partialsDir:

app.engine('.hbs', exphbs({
    defaultLayout: 'layout',
    extname: '.hbs',
    layoutsDir: path.join(__dirname),
    partialsDir: [
        path.join(__dirname, 'dashboard', '_public', 'main'),
        path.join(__dirname, 'home', '_public', 'main')
    ]
}));

,但它获取所有路由的所有视图的所有脚本。并使用{{>viewScript}}(模板)加载所有.hbs(当我回家时,我有home部分.hbs,当我进入仪表板时,我拥有home和仪表板部分.hbs,因此不适用于我。

我尝试了src,但不起作用(MIME错误)

<script src="viewScript.hbs"></script>

我可以在一个.hbs文件中将两个.hbs与其自己的js组合在一起,好的,但是我想将这些部分分开。

1 个答案:

答案 0 :(得分:0)

对于这种情况,我找到了一种干净的解决方案,可以将这些碎片放在单独的文件中(当您将组件中的视图而不是将所有视图都放在一个路径上时,比任何一种复杂的模板系统都更简单)。

在.hbs中,这可能是一本小词典,然后再加载我可能需要的所有字符串值。

<script>
    var hello = "{{{lang.hello}}}";
</script>
<script src="viewScript.js"></script>

此方法很简单,不要重复任何操作,而让我使用jquery和更多的东西来做动态名称。