jQuery 团队终于揭开了等待已久的 3.0 发布版的神秘面纱,带来了全新的、精简过的选项,以及新的主要功能、改进和 bug 的修复。
在《jQuery 3.0 终于发布了!》的博客帖中,jQuery 团队的核心成员Timmy Willison 宣布了jQuery 的“精简编译”,其中说道:“有时你不需要ajax,或者你更偏向使用专门集中于ajax 请求而开发的许多独立库之一。并且使用CSS 和类处理来实现你的web 动画往往更加简单。”
精简版与标准版jQuery 一起发布,其中不包括ajax、动画效果和最近否决的代码,对比完整版的30k,它以精简的23.6k 的大小呈现在大家面前。这个精简版的jQuery 包可以在这里下载。
自从2014 年十月以来的预测,在3.0 这个重要里程碑的新功能中还有一个更新过的jQuery.Deferred 对象。现在它兼容Promises/A+ 和ES2015 Promises,Willison 还解释,在3.0 版本中“在.then()
回调中抛出的异常现在变成了一个rejection 类型的值。之前,异常会一直向上抛出,中止了回调的执行。任何被defer 的部分,如果依赖于一个抛出异常的、被defer 的部分的解决,那它将永远不会被执行。”
Willison 还做了一个很重要的区分,使用 rejection 回调处理被捕获的异常现在描述性更强了,这使开发者们可以使用 promises 时总是添加至少一个 rejection 回调。
3.0 发布版中的其他改进还包括在展示动画效果、展示更平滑的动画和减少移动端电量损耗的时候使用requestAnimationFrame
API。当 Willison 解释之前在代码的兼容性问题后他们提出而又否决这次更新时,他说他们的团队希望能通过在浏览器标签页离开视图时延迟动画解决这个问题。
除了大量其他的修改,jQuery 3.0 现在带来了正式的对jQuery.ready
中的 promise 的支持。然而人们注意到jQuery.ready
自从 jQuery 1.8 开始就作为类似 promise 对象的消耗品,在文档中它通过jQuery.when
或原生的Promise.resolve()
给予支持。一个典型的使用例子如下:
$.when( $.ready, $.getScript("optional.js") ).then(function() { // the document is ready and optional.js has loaded/run }).catch( function() { // an error occurred })
这次发布版还带来了一些突破性的变化,尽管它本来是企图尽可能向后兼容的。在 jQuery 核心中,jQuery 是使用"use strict
"命令来编译的,虽然人们能够注意到大部分已存在的代码不应该产生任何变化,因为在 Strict 模式中它不允许执行。
其他的突破性变化包括去除了 jQuery 核心中已否决的.context
和.selector
属性,这也是一个对数据名的改变。从 3.0 开始,所有的数据名都以驼峰式命名法进行存储(clickCount),而不是使用串联命名法(click-count)。
欲了解更多 3.0 版本中更新和突破性变化的信息,开发者们可以查看《jQuery 核心3.0 更新指南》。
查看英文原文: Long-awaited jQuery 3.0 Brings Slim Build
感谢张龙对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们。
评论