【发布时间】:2015-11-22 00:28:12
【问题描述】:
我正在为我的模板引擎使用 Express-Handlebars,我想从我的模板中进行异步调用,如下例所示:
{{{cmsLoader 'search-{$searchTerm}' searchTerm=query.input defaultId='search-default'}}}
这将通过特定 id(即“search-video-games”)在 db 中查询一段 html,如果密钥存在,它会添加 html。如果键不存在,它会查找 defaultId(即“search-default”)并添加它。如果 defaultId 未指定或不存在,则不添加任何内容。
大部分后端功能都已到位。我的问题是在助手内部进行异步处理。有没有办法在完成渲染之前等待来自 hbs-helper 的异步调用的结果?
注意:
我意识到我可以从控制器内部进行这些调用并将数据提供给视图,但是有大量的模板大多数都带有多个 CMS 块,并且由于这些模板会定期更改,因此很难提前计算它们维护。
【问题讨论】:
-
Node 中的大多数引擎不会执行此 AFAIK。您需要事先获取它。你不能有一个服务/中间件来检查请求并以通用方式为每个请求添加 CMS 数据吗?
-
很遗憾,每个 CMS 块都有一个特定的 id,并且可能会有数百个。
标签: node.js asynchronous express handlebars.js