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 )关注我们,并与我们的编辑和其他读者朋友交流。
评论