设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 开源资讯 查看内容

Ember改进渲染性能

2014-12-12 16:23| 发布者: joejoe0332| 查看: 937| 评论: 0|原作者: 王振峰|来自: infoq

摘要: Ember社区发布了Ember 1.8版本。该版本最显著的更新是使用了“金属视图”,改善了渲染性能。该特性也为进一步改善性能打好了基础,将来作为“HTMLBars”的一部分。在Ember以前的版本中,页面的HTML以字符串形式创建 ...

  Ember社区发布了Ember 1.8版本。该版本最显著的更新是使用了“金属视图”,改善了渲染性能。该特性也为进一步改善性能打好了基础,将来作为“HTMLBars”的一部分。


  在Ember以前的版本中,页面的HTML以字符串形式创建(通过Handlebars),然后通过字符串拼接进行组装。现在,页面片段还是以字符串形式创建(通过Handlebars),但会解析为DOM,然后组装为DOM树。


  此种方式的优势如下:

  • Ember再也不用使用<script>标签来标记数据绑定内容区域(为了跟踪DOM中哪些地方需要更新绑定值)。现在可以使用独立的DOM对象进行跟踪;
  • 在内嵌SVG文档中,提供组件、数据绑定、逻辑支持;
  • 移除渲染层的递归,既降低GC压力又可以在渲染时重用对象。


  但是与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还带来了其他方面的性能提升:

  • 在对字符串标准化(查找类或路由)的若干操作中(命名方式转换、单复数转换)引入了缓存策略;
  • MANDATORY_SETTER从运行期标识改为构建期的特性标识,使得getter和setter中的代码路径在构建后的生产版本中更短;
  • 重写Ember.Map,使其更快也更接近ES6的实现。


  该版本还弃用了很多功能,发布在Ember官网的过期功能指南中。欲知新版本变更和bug修复的全部内容请参考Ember的修改日志。


查看英文原文:Ember Gets Rendering Improvements, More Slated

转自 http://www.infoq.com/cn/news/2014/12/ember-1-8?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部