姗姗来迟的 Ember.js 1.6 版本

  • James Chesters
  • 王振峰

2014 年 7 月 24 日

话题:JavaScript语言 & 开发

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 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

JavaScript语言 & 开发