我已经创建了一个概念证明,可以使用依赖项来查看here . 问题是:Handlebars compile()
在服务器和客户端上的行为不同,因为这些平台上的模板需要/导入不同 .
var view = require('someView.hbs');
var data = {};
var content = isServer ? view(data) : handlebars.compile(view)(data);
在现有的应用程序中,我需要通过注入上面的条件来重写大量代码 . 有没有更好的方法来统一这个,摆脱条件?如何在两侧以相同的方式导入模板?
更多信息:
-
我使用stringify:
require('stringify')
-
如果我在服务器端运行
handlebars.compile(view)(data)
,我收到以下错误:
错误:您必须将字符串或Handlebars AST传递给Handlebars.compile . 你传递了函数ret(context,execOptions){if(!compiled) return compiled.call(this,context,execOptions); }
1 回答
如果这个
isServer ? view(data) : handlebars.compile(view)(data)
在任何地方都适合你,你可以创建一个函数然后把
content = my_render(view,data)
放在你需要的地方 .也许更好的解决方案是:
然后在需要的地方使用
content = my_compiled_hb(data)
.