【问题标题】:How do you use precompiled handlebars templates with emberjs 1.0.0-rc.2?如何在 emberjs 1.0.0-rc.2 中使用预编译的车把模板?
【发布时间】:2013-04-01 16:31:20
【问题描述】:

我正在尝试使用guard-handlebars 预编译我的车把模板(以避免将它们全部包含在我的 index.html 中,这感觉不太理想......)。预编译运行良好,Ember 接受了模板在我将其注入 Ember.TEMPLATES 时接受的事实,如下所示:

Ember.TEMPLATES['application'] = Handlebars.templates['application']

但是,它不起作用。我得到一个这样的例外:

Could not find property 'outlet'

...在 Handlebars helperMissing 方法中。似乎 Ember 使用了一些默认 Handlebars 东西的猴子补丁,据说添加了对 {{outlet}} 助手和其他人的支持。但是我的模板似乎没有使用这些插座。你如何解决这个问题?

我正在使用通过 NPM 安装的车把编译器来编译模板。

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    发现一个重复的问题,并提供了建议的解决方案/解决方法:How can I consume handlebars command-line generated templates with Ember?

    (简短摘要:是的,使用handlebars 命令行程序进行预编译不能立即工作,这正是我在原始问题中建议的原因)

    【讨论】:

      【解决方案2】:

      【讨论】:

      • 谢谢。不过我更喜欢基于 Ruby 的方法,因为无论如何我都在服务器端使用 Ruby。
      【解决方案3】:

      guard-handlebars gem 已经过时了,它不是为与 ember 一起工作而设计的。

      今天有几个选择。

      例如,要使用 barber 编译 ember 模板,请尝试以下操作:

      compiled_template = Barber::Ember::FilePrecompiler.call(IO.read(file))
      # now ruby variable compiled_template is a string like: "Ember.Handlebars.template(function(...));"
      
      result = "Ember.TEMPLATES['#{name}'] = '#{compiled_template}';"
      # now result is a JS string that sets Ember.TEMPLATES[name] to precompiled handlebars
      

      当新版本的 ember 发布时,可能需要几天时间才能通过生态系统。发生这种情况时,您可能会发现 ember-source gem 很有帮助。有关详细信息,请参阅 Alex 的博客文章:

      http://alexmatchneer.com/blog/2013/02/27/gemifying-ember-dot-js-slash-handlebars-dot-js-slash-etc-dot-js/

      【讨论】:

      • 感谢您的提示。我最终为此编写了自己的守卫,这感觉很合理,因为我没有使用 rake 或 grunt(而是使用 Guard)。这是我的要点:gist.github.com/perlun/5286391
      • 有道理。如果你让它工作起来会很棒,我敢打赌其他人会发现它很有帮助。我在那里做了一些 cmets,也更新了我的答案......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多