Express - 异步模板
Express - Async Templating
我正在为我的模板引擎使用 Express-Handlebars,我想从我的模板中进行异步调用,如下例所示:
{{{cmsLoader 'search-{$searchTerm}' searchTerm=query.input defaultId='search-default'}}}
这将通过特定 ID(即 'search-video-games')向数据库查询 html 的块,如果键存在,它会添加 html。如果密钥不存在,它会查找 defaultId(即 'search-default')并添加它。如果 defaultId 未指定或不存在,则不添加任何内容。
大部分后端功能都已到位。我的问题是在助手内部进行异步处理。有没有办法在完成渲染之前等待来自 hbs-helper 的异步调用的结果?
注意:
我意识到我可以从控制器内部进行这些调用并将数据提供给视图,但是有大量的模板大部分都带有多个 CMS 块,并且由于这些模板会定期更改,因此提前考虑它们会难以维护。
Handlebars 不是异步模板引擎,所以这是不可能的。您需要为 Node.js 切换到异步模板引擎,例如 Marko。即使在渲染开始后,Marko 也允许您异步获取额外数据。
我正在为我的模板引擎使用 Express-Handlebars,我想从我的模板中进行异步调用,如下例所示:
{{{cmsLoader 'search-{$searchTerm}' searchTerm=query.input defaultId='search-default'}}}
这将通过特定 ID(即 'search-video-games')向数据库查询 html 的块,如果键存在,它会添加 html。如果密钥不存在,它会查找 defaultId(即 'search-default')并添加它。如果 defaultId 未指定或不存在,则不添加任何内容。
大部分后端功能都已到位。我的问题是在助手内部进行异步处理。有没有办法在完成渲染之前等待来自 hbs-helper 的异步调用的结果?
注意:
我意识到我可以从控制器内部进行这些调用并将数据提供给视图,但是有大量的模板大部分都带有多个 CMS 块,并且由于这些模板会定期更改,因此提前考虑它们会难以维护。
Handlebars 不是异步模板引擎,所以这是不可能的。您需要为 Node.js 切换到异步模板引擎,例如 Marko。即使在渲染开始后,Marko 也允许您异步获取额外数据。