2012-09-13 50 views
1

我使用的是預編譯模板,有以下幾個原因:如何使用Ember使用handlebars命令行生成的模板?

  1. 性能(無需在運行時重新編譯)
  2. 代碼分離(清潔不是嵌入<script>標籤和JS硬編碼)
  3. 內容安全政策(這是爲了擴展)。

基本上,我通過handlebars command line utility基於幾個template.handlebars文件生成templates.js。接下來,我嘗試將這些模板爲灰燼與下面的循環:

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

結果是奇怪的:文字似乎被加載,但很多模板的功能(如{{outlet}}。)不工作。我懷疑這是因爲把手和灰燼把手不是一回事。

我想有兩個選項(和問題):

  1. 預編譯灰燼友好的模板(我怎麼可以通過命令行做到這一點?)
  2. 正確導入把手模板成灰燼(怎麼樣? )

UPDATE:根據答案,Ember.Handlebars是不一樣的把手,所以預編譯是不同的。編寫了一個簡單的腳本來預編譯Ember:https://gist.github.com/3723927

回答

2

是的,普通Handlebars編譯器編譯爲不同於Ember.Handlebars的JavaScript,所以你不能在Ember中使用它的輸出。

我不知道通過命令行運行Ember.Handlebars的方法,但原則上應該可以編寫一些東西。

要了解如何預編譯Ember.Handlebars,請查看源代碼ember-rails - 它支持預編譯。