首页
学习
活动
专区
圈层
工具
发布

告别IE 10,十年等待,jQuery 4.0终于发布!

编译 | 苏宓

出品 | CSDN(ID:CSDNnews)

在沉寂近十年后,知名 JavaScript 库 jQuery 终于迎来了 4.0.0 正式版。这一版本不仅是 jQuery 自 3.x 之后的首个主版本更新,也标志着这个曾长期主导前端开发的工具,开始全面转向现代 Web 开发环境。

jQuery 最早由美国软件工程师 John Resig 于 2006 年 1 月在纽约的一场 BarCamp 上发布,随后迅速成为 Web 开发领域的“标配工具”,并在很长一段时间内深刻影响了前端技术的发展路径。上一个主版本 jQuery 3 发布于 2016 年,此后多年未再进行大更新。

一次迟到多年的“技术清理”

据官方介绍,jQuery 4.0 的研发周期十分漫长,其间经历了多次预发布版本。此次更新的核心目标是清理历史包袱、推动代码现代化,因此不可避免地引入了一些不兼容变更。对此,JQuery 官方建议开发者在升级前仔细阅读更新说明,不过整体来看,大多数项目只需做少量修改即可完成迁移。

在 jQuery 团队看来,4.0 中的不少改动,其实早就该做了,只是此前无法通过补丁版本或小版本更新实现。

这次更新主要做了几件事:

清理长期遗留的旧代码

移除已经废弃多年的 API

删除一些从未对外文档化、但意外暴露出来的内部参数

放弃部分“魔法行为”(隐式规则复杂、难以维护的机制)

为了降低升级成本,JQuery 官方团队还同步发布了升级指南(https://jquery.com/upgrade-guide/4.0/)和新版 jQuery Migrate 插件(https://github.com/jquery/jquery-migrate/),用于帮助开发者定位潜在问题。团队也鼓励用户在升级过程中反馈遇到的兼容性问题。

不再支持 IE10 及更早版本

从 jQuery 4.0 开始,Internet Explorer 10 及更早版本被正式放弃。

有开发者可能会问:为什么 IE11 还在?官方给出的解释是“分阶段移除”。IE11 的支持将在 jQuery 5.0 中彻底结束,而 4.0 只是第一步,先删除专门为 IE10 及更老版本服务的代码。

与此同时,jQuery 4.0 也一并停止支持多种“历史级”浏览器,包括:

Edge Legacy

iOS 最近三个大版本之前的系统

最近两个正式版之前的 Firefox(不含 Firefox ESR)

以及 Android 原生浏览器。

引入 Trusted Types,强化 CSP 支持

在安全性方面,jQuery 4.0 新增了对 Trusted Types 的支持。这意味着,在启用 require-trusted-types-for 的内容安全策略(CSP)时,jQuery 可以安全地处理被包装成 TrustedHTML 的内容,避免触发安全违规。

同时,jQuery 也调整了异步脚本加载方式。过去部分场景仍依赖内联脚本,容易在严格 CSP 配置下报错。现在,大多数异步脚本请求都会优先使用 <script> 标签加载,而不是内联执行。

仍然使用 XHR 的情况只剩下少数,例如显式传入 headers 选项(官方也建议改用 scriptAttrs)。整体目标只有一个:尽量避免 CSP 冲突。

jQuery 源码正式迁移到 ES Modules

对工具链和工程化来说,这是一次意义不小的变化。

jQuery 的源码长期采用 AMD 模块体系,并依赖 RequireJS 构建。虽然源码一直会随版本发布到 npm 和 GitHub,但并不能直接作为现代模块系统使用。

在 4.0 中,jQuery 正式完成从 AMD 到 ES Modules(ESM)的迁移,打包工具也切换为 Rollup,并且对 ESM 构建单独执行完整测试。

这让 jQuery 能更自然地融入现代开发流程,例如:

与 Webpack、Vite 等构建工具协作

使用 <script type="module"> 直接在浏览器中加载

更好地适配当下主流的前端工程实践

一批废弃 API 被彻底移除

在 4.0 这个主版本中,jQuery 终于下定决心清理多年积累的废弃 API。

被移除的函数包括 jQuery.isArray、jQuery.parseJSON、jQuery.trim、jQuery.type、jQuery.now、jQuery.isNumeric、jQuery.isFunction、jQuery.isWindow、jQuery.camelCase、jQuery.nodeName、jQuery.cssNumber、jQuery.cssProps、jQuery.fx.interval。

这些 API 要么原本就只打算内部使用,要么已经被浏览器原生能力全面覆盖。官方明确建议直接使用原生替代方案,例如 Array.isArray()、JSON.parse()、String.prototype.trim()、Date.now()。

在移除旧 API、同时删除 IE 兼容代码之后,jQuery 的体积也随之下降,压缩后减少了 3KB 以上。

jQuery 原型对象中仅供内部使用的方法被移除

jQuery 原型对象中,长期存在一些数组方法(push、sort、splice),但它们的行为并不符合常规 jQuery API,也从未打算对外使用。

在 4.0 中,这些方法已被彻底移除。如果项目中曾直接调用过这类方法,官方给出的替代写法是使用原生数组方法,例如:[].push.call($elems, elem)。

焦点事件顺序改为遵循 W3C 规范

多年来,各浏览器在 focus、blur、focusin、focusout 等事件的触发顺序上一直不一致。jQuery 早年为了统一体验,自行定义了一套顺序。但问题在于:这套顺序已经不再符合最新的 W3C 规范。

从 jQuery 4.0 开始,库本身不再覆盖浏览器的原生行为,而是完全遵循当前规范定义的顺序,即 blurfocusoutfocusfocusin,而在旧版本中,jQuery 使用的是 focusout blur focusin focus。

有些讽刺的是,唯一曾经严格遵循旧版 W3C 规范的浏览器,正是 Internet Explorer。

这是一项明确的破坏性变更,但官方也表示:至少现在“所有人终于站在同一条规则线上了”。

Slim 版本进一步瘦身

jQuery 4.0 的 slim build 再次变小,主要原因是移除了 Deferred 和 Callbacks 模块,压缩后体积约为 19.5KB。

Deferred 虽然比原生 Promise 功能更丰富,但现代浏览器(除 IE11 外)已经全面支持原生 Promise,大多数使用场景都可以直接迁移。如果项目仍需支持 IE11,官方建议使用完整版 jQuery,或自行引入 Promise polyfill。

下载与获取方式

jQuery 4.0 已通过官方 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

整体来看,jQuery 4.0 更像一次“为未来让路”的版本:它不再试图兼顾所有历史环境,而是明确站在现代 Web 标准一侧。对于仍在使用 jQuery 的项目而言,这次升级既是一次成本可控的迁移,也是一道不可回避的时间节点。

更多内容详见官方博客:https://blog.jquery.com/2026/01/17/jquery-4-0-0/

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OLOTdIX-_j1GD1f6E8TeYVLw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券