node.js - Nodejs Express 车把如何在没有模板的情况下将 .hbs 包含在另一个 .hbs 中
问题描述
如何在没有模板的情况下将 .hbs 包含在另一个 .hbs 中?我正在使用基于组件的 Nodejs 架构和 Express,我需要包含带有内容的 hbs 文件,以便{{values}}
在 html 和 js 端使用,而无需复制任何内容并进行清理。
我尝试像这样使用 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 和更多的东西来做动态名称。
推荐阅读
- mysql - 竞态条件下的 INSERT-SELECT 和 UPDATE
- python - 从熊猫系列中去除非空白字符
- neural-network - 在没有历史数据的情况下训练神经网络
- grub2 - 如何使用带有 UEFI 的 GRUB2 来安全启动 Ubuntu?
- php - PHP QR Code 不会显示 UTF-8 字符
- arrays - 重击。初始化动态关联数组
- matlab - 设置 MATLAB 的默认图形大小
- c - 写入文件的完整位置时出现分段错误
- php - 是否有更短、更优化的方法来检查 GET 参数?
- angular - Angular 6 Reactive Forms 动态复选框