1

我使用预编译模板有几个原因:

  1. 性能(运行时无需重新编译)
  2. 代码分离(比<script>在 JS 中嵌入标签和硬编码更干净)
  3. 内容安全策略(这是用于扩展)。

基本上,我是templates.js通过车把命令行实用程序生成的,基于几个template.handlebars文件。接下来我尝试通过以下循环将这些模板引入 Ember:

for (var name in Handlebars.templates) {
  var template = Handlebars.templates[name];
  Ember.TEMPLATES[name] = template;
}

结果很奇怪:文本似乎已加载,但许多模板功能(例如{{outlet}})不起作用。我怀疑这是因为 Handlebars 和 Ember-Handlebars 不是一回事。

我想有两个选择(和问题):

  1. 预编译 Ember 友好模板(如何通过命令行执行此操作?)
  2. 将 Handlebars 模板正确导入 Ember(如何?)

更新:根据答案,Ember.Handlebars 与 Handlebars 不同,因此预编译不同。为 Ember 编写了一个简单的预编译脚本:https ://gist.github.com/3723927

4

1 回答 1

2

是的,普通的 Handlebars 编译器编译为与 Ember.Handlebars 不同的 JavaScript,因此您不能使用 Ember 使用它的输出。

我不知道通过命令行运行 Ember.Handlebars 的方法,尽管原则上应该可以编写一些东西。

要了解如何使用 Ember.Handlebars 进行预编译,请查看ember-rails的源代码- 它支持预编译。

于 2012-09-13T16:57:19.770 回答