Ember社区发布了Ember 1.8版本。该版本最显著的更新是使用了“金属视图”,改善了渲染性能。该特性也为进一步改善性能打好了基础,将来作为“HTMLBars”的一部分。 在Ember以前的版本中,页面的HTML以字符串形式创建(通过Handlebars),然后通过字符串拼接进行组装。现在,页面片段还是以字符串形式创建(通过Handlebars),但会解析为DOM,然后组装为DOM树。 此种方式的优势如下:
但是与Ember 1.6相比,新版本看似性能有所降低,尤其在IE和Android的浏览器上。该问题可能是因为引入了额外的中间步骤(首先将Handlbars转换为字符串,然后解析为DOM),但尚未得到证实。将来的版本会移除多余的步骤。 Matthew Beale在HackerNews上发表了评论,对重构渲染过程的目前状态和未来计划做了说明: 我们开始使用HTMLBars这个术语的目的是为了对Ember的渲染流水线进行一系列改善。在当前的版本(1.8)上我们增加了金属视图(渲染引 擎重构),在下一版本(1.9)中我们计划增加流(数据绑定重构),在1.10版本我们希望能够采用新语法和基于DOM的模板引擎。 我们尽力以渐进方式发布HTMLBars特性,而不是完全重写,部分原因是该计划的落地比预期要花更长的时间。但是我个人还是很高兴看到该变化目前进行得很顺利,如果您是Ember.js用户,应该有同感。 Matthew 提到的“流”是一种崭新的Ember.js内部实现,用于替换Ember渲染[z5] [zw6] 流水线底层的数据绑定。该特性会简化模板助手的实现。与Ember 1.8版本同时发布的Ember 1.9 beta版本提供了该特性。 Ember社区欢迎HTMLBars特性的原因有如下几点:无需修改语法,现有应用即可获得显著的速度提升——完全是因为渲染过程的改变(解析为DOM而不是操作字符串);还有就是支持很多新特性,如组件的HTML语法。这些计划变更在“Ember 2.0 RFC路线方案”一文中有详尽的描述。 然而这些修改需要的时间远远超出预期,特别是因为需要大量的测试。 Ember 1.8还带来了其他方面的性能提升:
该版本还弃用了很多功能,发布在Ember官网的过期功能指南中。欲知新版本变更和bug修复的全部内容请参考Ember的修改日志。 |