Nodejs Express把手如何在没有模板的情况下将.hbs包含在另一个.hbs中
如何在没有模板的情况下将.hbs包含在另一个.hbs中?我正在使用基于组件的Nodejs架构和Express,我需要包含内容的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(当我回家时,我有家庭部分.hbs,当我去仪表板我有家和仪表板部分.hbs,所以这对我不起作用。
我尝试使用src,但它不起作用(mime错误)
<script src="viewScript.hbs"></script>
我可以将.hbs和它自己的js组合在一个.hbs文件中,好吧,但我想把这些碎片分开。
回答如下:我为这种情况找到了一个干净的解决方案,将这些部分放在单独的文件上(当你在组件中拥有视图而不是在单个路径上拥有所有视图时,比任何类型的复杂模板系统更简单)。
在使用我可能需要的所有字符串值加载脚本之前,.hbs可能是一个小字典。
<script>
var hello = "{{{lang.hello}}}";
</script>
<script src="viewScript.js"></script>
这个方法很简单,不要复制任何东西,让我用jquery和更多的东西做动态名称。