jQuery 3.0 的更新内容及使用方法(2)

所有现代的浏览器都已经支持了 requestAnimationFrame(参见:)了。由于其被普遍支持,jQuery 将会使用此 API 来执行动画。其优势包括更流畅的动画及更少的 CPU 占用(因此,可以在手机上节约电量)。

增强 .unwrap() 函数

.unwrap() 函数可以让你在 DOM 中删除指定元素的父元素,早先不能接收参数。如果有人想给 unwrap 设定一个条件,这可能是个问题。

在 jQuery 3.0.0 alpha 中,.unwrap() 可以接收 jQuery 选择器做为参数来处理这个问题。

jQuery.Deferred 升级为 Promises/A+ 兼容

Promiseis是一个异步操作的最终结果——它是一个对象,承诺在未来交付结果。 和promise接口的最主要方式是then方法, 它注册了回调函数。现在,在JavaScript中使用Promise来完成异步工作变得日益流行。Promises/A+是一个兼容JavaScript promises的开放标准。 (想要更多的信息,可以查看链接: https://promisesaplus.com/)

从jQuery的参考文档中,Deferred对象是一个由jQuery.Deferred()方法创建的可链接实用对象。它可以注册多个回调函数放入回调函数队列中、调度这个队列、更新任何同步或异步方法的成功和失败状态。在jquery 3.0.0中,jQuery.Deferred对象升级成与Promises/A+和ES2015 Promises兼容。 这就是.then()方法的主要变更。

更好地处理错误情况

这个版本的 jQuery 能更好地处理错误 —— 错误请求过去一直是被忽略的,直到现在的版本才会抛出错误。

举例来说:考虑到 offset,要获取当前第一个元素的坐标,相对于文档来说,就要匹配集合中的元素。如果你正试图在 jQuery 的早期版本找到抵消的窗口(window),你会得到{top: 0, left: 0}这样的结果,而不是抛出一个错误,这是因为抵消窗口(window)是无意义的。而在 3.0 alpha 版本中,它就会抛出一个错误。

另外一个例子:$("#") 现在会抛出一个错误,而不是返回一个长度为 0 的集合。

对自定义选择器(如:visible )进行了加速

当 :visible 之类的选择器在一个文档内多次使用时,性能得到了很大的提升。其内部是通过缓存来实现的 —— 第一次用过这个选择器后,以后返回结果都是一样的。但是其后的每一次调用返回结果都很快,因为缓存起作用了。来自 jQuery 的 Timmy Willison 在中指出使用缓存后 :visible 选择器的性能提升了 17 倍。

这些都是一些主要的更新。整个列表在他们的官方博客:.

在哪里下载最新版本

有两个版本:

 jQuery 3.0,其支持了现代浏览器:https://code.jquery.com/jquery-3.0.0-alpha1.js

 jQuery Compat 3.0,其包含了对 IE8 的支持:https://code.jquery.com/jquery-compat-3.0.0-alpha1.js

也可以从 npm 中获取:

npm install jquery@3.0.0-alpha1
npm install jquery-compat@3.0.0-alpha1

尽管去尝试一下这个 alpha 版本吧,然后可以到 https://github.com/jquery/jquery 反馈问题。这很值得一试!

更多的 Web 开发的实践

这篇文章是微软的布道者和工程师在实际学习 JavaScript 系列文章中的一篇,开源项目和互操作性的最佳实践,包括微软的 Edge browser 和新 Edge HTML 渲染引擎

我们鼓励您进行跨浏览器和设备测试,包括微软的 Edge——Win10 系统的默认浏览器 —— 在 dev.microsoftedge.com 上有免费的测试工具:

从我们工程师那里和下面的福利清单中获得更深入的了解:

上的编码实验室: 跨浏览器测试和最佳实践

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/144de422bb96677c32d62d1b8656a449.html