找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2438

积分

0

好友

342

主题
发表于 4 天前 | 查看: 14| 回复: 0

2006年1月14日,John Resig在纽约的BarCamp上首次介绍了名为jQuery的JavaScript库。二十年后的今天,jQuery团队正式宣布jQuery 4.0.0的最终版本发布。经过漫长的开发周期与多个预发布版本,jQuery 4.0.0带来了大量的改进和现代化特性。这是近十年来第一个主要版本更新,包含一些破坏性变更,因此在升级前请务必仔细阅读下文。尽管如此,我们预计大多数用户只需要进行少量代码修改即可完成升级。

许多破坏性变更是团队多年来一直希望实施,但无法在补丁或次要版本中完成的。我们删除了遗留代码,移除了先前已弃用的API,清理了公共函数中从未文档化的内部参数,并放弃了一些过于复杂的“魔术”行为。

团队准备了详细的升级指南,并发布了jQuery Migrate插件来协助过渡。请尝试升级,如果遇到任何问题,请向我们反馈。

与往常一样,此版本可通过我们的CDN和npm包管理器获取。其他第三方CDN可能很快也会提供支持,但请注意我们无法控制他们的发布计划,他们可能需要一些时间准备。以下是jQuery 4.0.0的更新亮点。

移除 IE<11 支持

jQuery 4.0放弃了对Internet Explorer 10及更早版本的支持。有些人可能会疑惑,为何不一同移除对IE 11的支持?我们计划分阶段移除支持,下一步计划在jQuery 5.0中实施。目前,我们首先移除了专门用于支持IE 11之前版本的代码。

我们还放弃了对其他一些非常陈旧浏览器的支持,包括Edge Legacy版本、iOS倒数第4个版本之前的版本、Firefox倒数第3个版本之前的版本(Firefox ESR除外)以及Android Browser。你无需为此进行任何代码修改。如果你的项目仍需支持这些浏览器,请坚持使用jQuery 3.x版本。

Trusted Types 和 CSP

jQuery 4.0增加了对Trusted Types的支持,确保包装在TrustedHTML对象中的HTML可以安全地作为输入传递给jQuery的DOM操作方法,而不会违反 require-trusted-types-for 内容安全策略指令。

与此同时,虽然部分AJAX请求之前已使用 <script> 标签来维护如 crossdomain 等属性,但我们现在已将大多数异步脚本请求切换为使用 <script> 标签,以避免因使用内联脚本而引发的CSP错误。仍有少数情况会使用XHR进行异步脚本请求,例如传递 "headers" 选项时(建议改用 scriptAttrs 选项),但我们会尽可能优先使用 <script> 标签。

jQuery 源代码迁移到 ES 模块

将jQuery源代码从AMD迁移到ES模块是一个重要的里程碑。jQuery的源代码一直随着发布版本在npm和GitHub上提供,但除非使用RequireJS(jQuery过去选择的构建工具),否则无法直接作为模块导入。现在,我们已切换到Rollup来打包jQuery,并且所有测试都在纯ES模块环境下运行。这使得jQuery能够更好地兼容现代构建工具、开发工作流以及浏览器(通过使用 <script type=module>)。

移除已弃用的 API

以下函数已在多个版本中被标记为弃用。现在到了主要版本更新的时候,是时候彻底移除它们了。这些函数要么最初就是为内部使用而设计,要么在所有支持的浏览器中都已有了功能等效的原生方法。被移除的函数包括:

jQuery.isArrayjQuery.parseJSONjQuery.trimjQuery.typejQuery.nowjQuery.isNumericjQuery.isFunctionjQuery.isWindowjQuery.camelCasejQuery.nodeNamejQuery.cssNumberjQuery.cssPropsjQuery.fx.interval

请改用相应的原生方法,例如 Array.isArray()JSON.parse()String.prototype.trim()Date.now()

移除这些已弃用的API,加上清理旧版IE的支持代码,使得jQuery库在gzip压缩后的大小减少了超过3KB。

从 jQuery 原型中移除仅内部方法

jQuery原型长期以来包含一些行为与其他jQuery方法不一致的数组方法,它们一直是为内部使用而设计的。这些方法是 pushsortsplice。现在它们已从jQuery原型中移除。如果你在使用这些方法,例如 $elems.push( elem ),可以将其替换为 [].push.call( $elems, elem )

长期以来,浏览器在 focusinfocusoutfocusblur 事件的触发顺序上未能达成一致。最终,jQuery 4.0支持的所有浏览器的最新版本在事件顺序上形成了共识。遗憾的是,这个共识与jQuery多年前选择的顺序不同,因此这成为了一个破坏性变更。不过,现在至少所有浏览器都统一了!

从jQuery 4.0开始,我们不再覆盖浏览器的原生行为。这意味着除IE外的所有浏览器都将遵循当前的W3C规范,事件顺序为:

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

而jQuery在之前版本中的顺序是:focusout、blur、focusin、focus。颇具讽刺意味的是,唯一曾遵循旧版W3C规范(2023年更新前)的浏览器正是Internet Explorer。

更新 slim 构建

在jQuery 4.0.0中,slim构建变得更小了,我们移除了Deferreds和Callbacks模块(现在gzip压缩后大约只有19.5KB!)。Deferreds长期以来都支持Promises A+标准,因此在大多数情况下可以使用原生Promises替代。原生Promises在jQuery支持的所有浏览器中均可使用(除了IE 11)。尽管Deferreds有一些原生Promises不支持的功能,但大多数使用场景都可以迁移到Promise方法。如果你需要支持IE 11,建议使用完整版构建,或为IE 11添加原生Promise的polyfill。

下载

你可以从jQuery CDN获取文件,或直接使用以下链接:
https://code.jquery.com/jquery-4.0.0.js
https://code.jquery.com/jquery-4.0.0.min.js

你也可以通过npm安装此版本:

npm install jquery@4.0.0

Slim 构建

有时你可能不需要ajax功能,或者更倾向于使用专注于ajax请求的众多独立库之一。通常,结合使用CSS和类操作来处理Web动画会更加简单。最后,jQuery支持的所有浏览器(除了IE 11)现在都已全面支持原生Promises,因此在大多数场景下不再需要Deferreds和Callbacks。除了包含所有功能的常规版本,我们还发布了排除这些模块的“slim”版本。如今jQuery的大小很少成为加载性能的瓶颈,但slim构建的gzip压缩体积比常规版本小了约8KB。这些文件同样在npm包和CDN上提供:

https://code.jquery.com/jquery-4.0.0.slim.js
https://code.jquery.com/jquery-4.0.0.slim.min.js

这些更新已作为npm和Bower上的当前版本发布。有关获取jQuery的所有方式,请访问 https://jquery.com/download/。公共CDN今天会收到文件副本,请给予他们几天时间进行发布。如果你急于开始,可以先使用我们CDN上的文件,直到其他CDN完成更新。

感谢

感谢所有通过提交补丁、报告错误或参与测试等方式为此版本做出贡献的人员,包括Alex、Ahmed S. El-Afifi、fecore1、Dallas Fraser、Richard Gibson、Michał Gołębiowski-Owczarek、Pierre Grimaud、Gabriela Gutierrez、Jonathan、Necmettin Karakaya、Anders Kaseorg、Wonseop Kim、Simon Legner、Shashanka Nataraj、Pat O’Callaghan、Christian Oliff、Dimitri Papadopoulos Orfanos、Wonhyoung Park、Bruno PIERRE、Baoshuo Ren、Beatriz Rezener、Sean Robinson、Ed Sanders、Timo Tijhof、Tom、Christian Wenz、ygj6 以及整个jQuery团队。

jQuery 20 岁生日快乐!

在过去的二十年里,许多杰出的人才为jQuery及其相关项目做出了贡献。我们许多人在达拉斯重聚合影,John Resig甚至通过Zoom远程加入。这个具有里程碑意义的版本正是在我们所有人欢聚一堂时发布的。

对于关注此类前端生态重大更新的开发者,欢迎到云栈社区相关板块进行更深入的交流与探讨。

原文:https://blog.jquery.com/2026/01/17/jquery-4-0-0/




上一篇:微软会推出Windows主题的Linux发行版吗?技术分析与未来展望
下一篇:Flask/FastAPI项目迁移至BustAPI指南:性能提升50倍,0代码重构成本
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-24 01:46 , Processed in 0.420153 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表