5

我正在尝试为 PlayFramework 2.1 编写一个 SBT 插件,它将预编译位于 app/assets/templates 中的车把模板。我当然会在完成后分享这个插件。我发现这个方法http://eng.netwallet.com/2012/04/25/emberhandlebars-template-precompilation-with-play/有点过时了,但将它改编为 Play 没问题!2.1。

然后我尝试编译一个简单的模板文件,但 SBT 失败并显示以下内容:

ember: processing template test

[error] /.../templates/test.handlebars: Compilation error[unexpected exception during Ember compilation (file=/.../templates/test.handlebars, options=List(), ember=ember-1.0.0-pre.4.js): org.mozilla.javascript.EvaluatorException: missing name after . operator (ember-1.0.0-pre.4.js#3309)]

[error] (MyProject/*:play-copy-assets) @6dap83075: Compilation error in /.../templates/test.handlebars:null

[error] (MyProject/compile:resources) @6dap83075: Compilation error in /.../templates/test.handlebars:null

第 3309 行的 ember-1.0.0-pre.4.js 有一个 volatile 关键字,这显然是在 Rhino 中保留的。

我远不是犀牛专家,这就是为什么我想知道是否有人知道解决这个问题的方法?我现在不是在寻找 5* 解决方案。任何有可能适用于大多数简单车把模板的解决方案(即使是快速而肮脏的 hack,比如使用自定义的 ember.js)都可以工作,一旦功能存在并且 SBT 插件出来,我们会担心对其进行优化。

提前致谢!

4

3 回答 3

0

我为 Grails 编写了一个等效的插件。如果我从 rhino 1.7R4 切换到 1.7R2,我会得到完全相同的错误。你必须切换到 org.mozilla:rhino:1.7R4。

如果您遇到更多问题,建议您查看我的源代码。你可以从这里开始:https ://github.com/florent-blanvillain/grails-ember-templates-precompiler/blob/master/src/groovy/org/grails/plugin/ember/handlebars/Precompiler.groovy

干杯

于 2013-02-17T15:16:44.583 回答
0

这是由于 ember 使用了为 rhino 保留的关键字 volatile,因为它符合 JavaScript EC3。设置 rhino 使用 EC5 没有效果

https://github.com/emberjs/ember.js/issues/1202

这在 ember-1.0.rc1 中更糟,因为它们使用了其他保留关键字。一个解决方案是使用重命名这些关键字的自定义 ember.js 文件

于 2013-03-06T14:29:29.337 回答
0

我在 play 2.1 中用于 ember 预编译的插件正在运行。它支持 ember-1.0.0-pre.2、ember-1.0.0-rc.1 和 ember-1.0.0-rc.3 并解决与 rhino 相关的问题。

https://github.com/krumpi/play-emberjs

于 2013-04-21T22:58:30.940 回答