经过漫长的开发周期和数个预览版本,jQuery 团队正式发布了 jQuery 4.0.0。这是近十年来的首个主要版本更新,包含了一些破坏性变更,但团队预期大多数用户只需对代码进行最小改动即可升级。官方已准备好升级指南和 jQuery Migrate 插件,以协助用户完成过渡。

有趣的是,尽管常被贴上“过时”的标签,但根据 OpenJS 基金会基于 IDC 的调研数据,全球仍有约 90% 的网站在使用 jQuery。这使得本次大版本更新,更像是一场针对庞大存量市场的、迟到的现代化改进。
jQuery 4.0 核心新特性
彻底告别 IE 时代
jQuery 4.0 正式放弃对 IE10 及更早版本的支持。官方同时透露,IE11 也将在未来的 jQuery 5.0 中被淘汰。此外,对一些老旧浏览器的支持也已停止,包括 Edge Legacy、较早的 iOS 和 Firefox 版本等。
移除这些老旧浏览器的支持代码,最直接的益处是减小了库的体积。对于仍需支持这些环境的老旧项目,官方建议继续使用 jQuery 3.x 版本。
拥抱 ES Modules 现代架构
本次版本最底层的变革之一,是将源码从 AMD 模块系统全面迁移至 ES Modules,并使用 Rollup 进行打包。这带来了什么好处呢?
- 可在支持原生模块的现代浏览器中直接导入使用。
- 与现代构建工具(如 Webpack、Vite 等)实现无缝衔接,更好地融入现代前端工程化工作流。
- 对 Tree-shaking 友好,构建时能更有效地剔除未使用的代码,优化最终打包大小。
支持 Trusted Type 和 CSP
在企业级应用越来越重视安全的今天,内容安全策略 (CSP) 已成为标配。jQuery 4.0 引入了对 Trusted Types 的支持,确保被 TrustedHTML 包装的 HTML 内容可以作为参数安全地传递给 jQuery 的 DOM 操作方法,而不会违反 CSP 的 require-trusted-types-for 指令。
同时,为了减少因使用内联脚本而引发的 CSP 错误,大部分异步脚本加载请求已切换为使用 <script> 标签实现。
简单来说,过去类似 $(“div”).html(‘<img src=x onerror=alert(1)>’) 的代码在严格 CSP 下会被阻止。现在,配合 Trusted Types,jQuery 4.0 能更安全地处理这类操作。
API 大瘦身
作为一次主要版本更新,jQuery 4.0 移除了多个已被废弃多年的 API,为代码库“减负”。
jQuery.isArray, jQuery.isFunction, jQuery.isWindow (均已有原生 JavaScript 方法替代)
jQuery.trim(), jQuery.camelCase(), jQuery.now() (已废弃多年)
jQuery.parseJSON() (可直接使用 JSON.parse())
- 以及一些内部 API 如
jQuery.cssNumber, jQuery.cssProps, jQuery.fx.interval 等。
对于计划升级的项目,建议使用官方提供的 jQuery Migrate 插件来检测并逐步替换这些已移除的 API。
Slim 版本再瘦身,仅 19.5KB
jQuery 4.0 的 Slim 版本进一步移除了 Deferred 和 Callbacks 模块(因为现代浏览器原生 Promise 已很成熟),gzip 压缩后体积仅为 19.5KB。这个版本非常适合那些只需要进行 DOM 操作和事件处理的轻量级应用场景。
事件系统遵循 W3C 标准
焦点相关事件(如 focus, blur, focusin, focusout)的触发顺序,不再由 jQuery 自定义,而是全面遵循最新的 W3C 规范。这提升了不同浏览器之间行为的一致性,但可能影响那些依赖旧有事件顺序的代码。
jQuery 使用率:被误解的“王者”
一个反直觉的事实是:jQuery 从未真正离开。高达 90% 的网站使用率揭示了两个残酷的真相:
- 存量市场巨大:互联网上存在着海量的历史网站、企业内网系统、政府平台等,它们往往不需要重写,只需要持续维护。
- 版本碎片化严重:从 1.x 到 3.x 的各种旧版本仍在生产环境中运行,其中约三分之一甚至运行在存在已知安全漏洞的版本上。
jQuery 为何显得“过气”?
尽管存量巨大,但 jQuery 在新项目中的光环确实已褪去,主要原因有四:
- 新项目的主动放弃:React、Vue 等现代框架提供了组件化、声明式 UI 和虚拟 DOM 等更先进的开发模式与体验,成为新项目的首选。
- 浏览器原生 API 的成熟:
querySelectorAll()、fetch()、classList、Promise 等现代 Web API 的出现,使得原生 JavaScript 开发体验大大改善,jQuery 的“语法糖”价值降低。
- 开发范式的转移:前端开发的核心思路从“直接操作 DOM”转向了“数据驱动视图”,jQuery 在管理复杂应用状态时显得力不从心。
- 生态系统的萎缩:社区创新活力和新插件的产出速度已远不及 React、Vue 等现代框架生态。
当下仍在使用的 jQuery 的场景
那么,jQuery 的用武之地在哪里?
- WordPress 帝国:全球超 40% 的网站基于 WordPress 构建,而其核心与大量主题、插件都深度依赖 jQuery。
- 企业级遗留系统:金融、政府等领域的历史系统,重写成本高昂,维护升级是更现实的选择。
- 营销页面与 CMS:大量功能简单的企业官网、活动页使用基于 jQuery 的模板搭建,生命周期短,不值得用现代框架重构。
- 快速原型与 MVP:引入一个 CDN 链接就能快速开工,无需复杂构建配置,适合想法验证。
- 经典插件依赖:如 DataTables(表格)、Slick(轮播)等优秀插件仍有稳定用户群,其技术栈决定了 jQuery 的存续。
结语
jQuery 4.0 的发布,并非一次意图“逆袭”的尝试,而更像是一份负责任的“维护声明”。它清晰地传递出以下几点信息:
- 对于新项目,React/Vue 等现代框架是更合适的选择。
- 对于庞大的存量项目,jQuery 依然值得信赖,并且正在朝着更安全、更现代的方向进化。
- 技术选型没有银弹,只有最合适的场景。
就像 COBOL 语言仍在金融核心系统中运转一样,jQuery 也将在互联网的长尾生态中持续服务。4.0 版本的发布,不是王者归来,而像一位经验丰富的老管家,默默整理并升级他的工具箱,为数以百万计仍在运行的网站提供更可靠的支持。
对前端生态的持续关注和讨论,欢迎来到云栈社区,与更多开发者一同交流成长。