我们目前在生产中使用的是Handlebars 1.3.0版,我想知道什么(如果有的话),我们需要进行更改才能升级到2.x版。由于HandlebarsJS团队致力于语义版本控制,因此我知道必须进行一些重大更改,但是我没有在README.md中看到它们。 changelogs for the v2.0.0-alpha.N releases中列出了一些项目,但是我不清楚这是否是完整列表(或者在2.0.0 final发布之前是否存在完整列表)。一些1.x发行版中也有“兼容性声明”部分,但我相信它们都是不间断的/向前兼容的。

谁能提供一些有关API差异或2.x系列目标/改进的见解?



更新:2014年10月16日从ember.js blog

除了上述更改之外:

最佳答案

如果您查看对应于官方Release Notes的Handlebars的v1.3.0和v2.0.0-alpha.1版本之间的更改,您会看到这是两个主要更改,这会在升级过程中破坏模板。

  • 预编译器输出已更改,这意味着1.x预编译模板将与Handlebars 2.x运行时不兼容,以及2.x运行时将与旧模板不兼容。您应该更新预编译器,更新运行时并更新所有模板。
  • Partials不再可以访问父上下文(../),但是现在可以接受哈希作为参数,并且可以通过@root变量访问根上下文。因此,请查看您使用../的partials,并将其更改为使用本地数据,并将其作为参数传递给partial。

  • 因此,这是升级到2.x Handlebars版本时应注意的主要事项。有一些内部更改会影响helperMissing辅助程序JavaScriptCompiler.compilerInfo,更新 AST 数据帧。但这仅对使用自己的fork或在运行时进行某些修改的用户有意义。其他更改主要是错误修复。

    10-05 18:01