如何使用Ember消耗把手命令行生成的模板?

时间:2012-09-13 15:14:48

标签: ember.js

我正在使用预编译模板有以下几个原因:

  1. 性能(无需在运行时重新编译)
  2. 代码分离(比在JS中嵌入<script>标签和硬编码更干净)
  3. 内容安全政策(适用于扩展程序)。
  4. 基本上,我基于多个templates.js文件通过handlebars command line utility生成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(如何?)
    3. UPDATE :根据答案,Ember.Handlebars与Handlebars不同,因此预编译不同。写了一个简单的脚本为Ember预编译:https://gist.github.com/3723927

1 个答案:

答案 0 :(得分:2)

是的,普通的Handlebars编译器编译成不同于Ember.Handlebars的JavaScript,所以你不能使用Ember来消耗它的输出。

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

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