姗姗来迟的Ember.js 1.6版本

Ember.js团队于近日发布了其JavaScript框架的1.6版本,由于增加了AMD加载器而导致了此次的发布延误。

在官方声明中,Ember核心团队成员Robert Jackson描述了Ember.js 1.6版本以后的构建如何通过es6-module-transpiler转换为AMD模块。据Jackson说,增加了小型AMD加载器来加载转换后的模块,影响了原来移动客户端的启动速度。他说:

在1.6.0将要发布时(5月底)该影响引起了我们的注意,我们决定推迟发布,一直到我们修复该问题。

现在回想起来这个决定非常不明智。此修复花费了比预想更长的时间,同时人们也只能继续使用1.5.1版本。我们很多用户,要么没有受到影响,要么并不在意此问题,但他们为了获得本该包括在1.6版本中的其他修复,被迫使用beta/canary(金丝雀)通道上的版本。

用户Xtian在评论声明时说:“我不大明白声明的开始几段:启动性能问题已经解决了呢?还是依然存在?”

Jackson回复内容为“还没有修复,但我们会尽快修复,并把它反向移植到1.7 beta分支中”。

又一Ember.js团队核心成员Stefan Penner详细描述了该问题:

该修复会成为Brian Donovan所主导项目square/es6-module-transpiler下的新bundle格式。该修复删除了整个AMD加载器,同时产生更小的整体构建。这样该bug中的阻塞问题也会得到改善,并且删除了ember-core中的不当循环。

此外,启动问题貌似不会影响桌面浏览器,但是在Android浏览器中会消耗大量时间。

虽然此次发布有所延迟,但是Ember社区并没有在意,因为1.6版本带来的新功能以及1.7版本承诺的功能着实令人振奋。

在最新发布的功能中,最显著的变化有更新了Ember.computed.empty,改善了缓存查找吞吐量,对测试友好的承诺,以及大量的bug修复。Jackson特别指出,更新后的Ember.computed.empty会自动识别数组,不需要用户显式指定array.[]作为依赖键。

为了描述Ember的对测试友好的承诺特性,Jackson说道:

使用1.5.1版本,测试时你必须在Ember.run循环中封装任何承诺解析,和/或拒绝调用,但是正常操作时相同的代码却不需要封装在循环中。在1.6中,在做承诺测试时,你再不需要将承诺封装在循环中。

在1.6版本的发布声明中,还包含了1.7版本的beta版本,该版本包含了对查询参数的支持,并且在1.7中默认开启。社区用户非常欢迎此功能,NetNames的软件工程师Adrian Meredith评论说:

我将应用更新并使用了最新的查询参数,能够正常运行!(需要进行必要的更新)。看起来比我使用一个月前的canary通道上的版本要好得多。好样的!

Ember 1.7的其他改进包括:

  • ember-routing-consistent-resources功能。
  • uuid可以跨项目使用。
  • Ember.uuid作为内部函数使用,代替以前作为Ember的属性的做法。

Ember.js基于MIT协议发布。InfoQ读者可以通过GitHub项目向Ember.js贡献自己的力量。1.7版本有望如期发布。

查看英文原文:Delayed Ember.js 1.6 released

感谢曹知渊对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至[email protected]。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

你可能感兴趣的:(姗姗来迟的Ember.js 1.6版本)