我使用预编译模板有几个原因:
- 性能(运行时无需重新编译)
- 代码分离(比
<script>
在 JS 中嵌入标签和硬编码更干净) - 内容安全策略(这是用于扩展)。
基本上,我是templates.js
通过车把命令行实用程序生成的,基于几个template.handlebars
文件。接下来我尝试通过以下循环将这些模板引入 Ember:
for (var name in Handlebars.templates) {
var template = Handlebars.templates[name];
Ember.TEMPLATES[name] = template;
}
结果很奇怪:文本似乎已加载,但许多模板功能(例如{{outlet}}
)不起作用。我怀疑这是因为 Handlebars 和 Ember-Handlebars 不是一回事。
我想有两个选择(和问题):
- 预编译 Ember 友好模板(如何通过命令行执行此操作?)
- 将 Handlebars 模板正确导入 Ember(如何?)
更新:根据答案,Ember.Handlebars 与 Handlebars 不同,因此预编译不同。为 Ember 编写了一个简单的预编译脚本:https ://gist.github.com/3723927