新闻

jQuery 4.0.0 beta 震撼发布!

发布者:深圳网站设计,日期:2024/2/14 11:50:01
jQuery 4.0 放弃了对 IE 10 及更早版本的支持。有些人可能会问为什么我们没有删除对 IE 11 的支持。我们计划分阶段删除支持,下一步将在 jQuery 5.0 中发布。现在,我们将首先删除专门支持早于 11 的 IE 版本的代码,从而在一个 PR 中将 -867 个 gzip 压缩字节的大小减少!

以下为官方译文:


jQuery 4.0.0 已经酝酿了很长时间,但现在它已经准备好发布测试版了!有很多内容要涵盖,团队很高兴看到它的发布。我们修复了错误,改进了性能,并进行了一些重大更改。毕竟,我们删除了对 IE<11 的支持!尽管如此,我们预计干扰将是最小的。


许多重大更改是团队多年来一直想进行的,但无法在补丁或次要版本中进行。我们修剪了遗留代码,删除了一些以前弃用的 API,删除了一些从未记录过的公共函数的仅限内部的参数,并放弃了对一些过于复杂的“魔术”行为的支持。


在最终发布之前,我们将发布一份全面的升级指南,概述已删除的代码以及如何迁移。 jQuery Migrate 插件也将随时为您提供帮助。目前,请试用测试版,如果您遇到任何问题,请告诉我们。


像往常一样,该版本可在我们的 CDN 和 npm 包管理器上获得。第三方 CDN 不会托管此测试版,但稍后将托管 4.0.0 最终版本。以下是 jQuery 4.0.0 beta 的一些亮点。



再见 IE<11


jQuery 4.0 放弃了对 IE 10 及更早版本的支持。有些人可能会问为什么我们没有删除对 IE 11 的支持。我们计划分阶段删除支持,下一步将在 jQuery 5.0 中发布。现在,我们将首先删除专门支持早于 11 的 IE 版本的代码,从而在一个 PR 中将 -867 个 gzip 压缩字节的大小减少!


我们还放弃了对其他非常旧的浏览器的支持,包括 Edge Legacy、iOS <11、Firefox <65 和 Android Browser。您不需要进行任何更改。如果您需要支持这些浏览器中的任何一个,只需坚持使用 jQuery 3.x。


已删除的已弃用 API


这些函数在多个版本中已被弃用。现在是时候删除它们了,因为我们已经发布了一个主要版本。这些函数要么总是内部的,要么现在在所有受支持的浏览器中都具有本机等效函数。删除的功能包括:


jQuery.cssNumber
jQuery.cssProps
jQuery.isArray
jQuery.parseJSON
jQuery.nodeName
jQuery.isFunction
jQuery.isWindow
jQuery.camelCase
jQuery.type
jQuery.now
jQuery.isNumeric
jQuery.trim
jQuery.fx.interval


push 和删除 sortsplice


jQuery原型长期以来一直具有Array方法,这些方法的行为与任何其他jQuery方法都不同,并且始终仅供内部使用。这些方法是 、 和 。我们将这些方法的使用切换到 Array 函数,而不是 jQuery 原型。例如,变为 .我们在这里提到它,以防有任何可能依赖这些方法的插件。pushsortsplice$elems.push( elem )[].push.call( $elems, elem )


focusin和事件顺序focosout


很长一段时间以来,浏览器对焦点和模糊事件的顺序没有达成一致,包括 、 、 和 。最后,jQuery 4.0 支持的所有浏览器的最新版本都收敛在一个共同的事件顺序上。不幸的是,它与jQuery多年前选择的一致顺序不同,这使得这是一个重大变化。至少现在每个人都在同一起跑线上!focusinfocusoutfocusblur


jQuery在以前的版本中对所有四个事件的顺序是:


1. focusout
2. blur
3. focusin
4. focus


从 jQuery 4.0 开始,我们不再覆盖本机行为。这意味着除 IE 之外的所有浏览器都将遵循当前的 W3C 规范,即:


1. blur
2. focusout
3. focus
4. focusin


对于那些好奇的人,W3C 规范之前定义了一个不同的顺序:


1. focusout
2. focusin
3. blur
4. focus


但是,很少有人认为这种直观性,并且规范在 2023 年发生了变化,以匹配浏览器已经实现的内容。具有讽刺意味的是,唯一遵循旧规范的浏览器是 Internet Explorer。


FormData支持


jQuery.ajax添加了对二进制数据的支持,包括 FormData。以前,二进制数据不是已知的数据类型,而是转换为字符串。可以通过禁用数据转换和手动处理数据来禁用该行为,但我们决定自动执行此操作。从技术上讲,这是一个重大更改,但应该更接近预期行为。


删除了自动 JSONP 升级


以前,with 提供的回调将转换为 JSONP 请求。如今,与跨域后端交互的首选方式是使用 CORS,它适用于 jQuery 4.0 支持的所有浏览器。这应该有助于避免意外行为,以防开发人员不知道可以使用 JSONP 从远程域执行代码。jQuery.ajaxdataType: "json"


jQuery 源已迁移到 ES 模块


这是一个特殊的日子,分支上的jQuery源从AMD迁移到ES模块。jQuery源代码一直与npm和GitHub上的jQuery版本一起发布,但如果没有RequireJS,则无法直接作为模块导入,RequireJS是jQuery选择的构建工具。从那以后,我们切换到 Rollup 来打包 jQuery,并且我们确实在 ES 模块上单独运行所有测试。


受信任类型和 CSP


jQuery 4.0 增加了对受信任类型的支持,确保 TrustedHTML 中包装的 HTML 可以以不违反内容安全策略指令的方式用作 jQuery 操作方法的输入。require-trusted-types-for


除此之外,虽然一些 AJAX 请求已经在使用标记来维护属性,例如 ,但我们已经将大多数异步脚本请求切换为使用标记,以避免因使用内联脚本而导致的任何 CSP 错误。在少数情况下,XHR 用于异步脚本请求,例如传递选项时(请改用!),但我们现在尽可能使用标记。< script > crossdomain "headers"scriptAttrs < script >


更小的体积,纤薄的身材


在jQuery 4.0.0中,随着延迟和回调的删除(现在低于20k字节的gzip!),纤薄的构建变得更小了。延期协议长期以来一直支持Promise A +标准,因此在大多数情况下可以使用原生Promises,并且除IE11之外,它们可在jQuery支持的所有浏览器中使用。延迟确实具有本机 Promise 不支持的一些额外功能,但大多数用法可以迁移到 Promise 方法。如果需要支持 IE11,最好使用主构建或为原生 Promise 添加 polyfill。


官方博客:https://blog.jquery.com/2024/02/06/jquery-4-0-0-beta/