jQuery 4.0 正式发布:轻装上阵,拥抱现代 Web

jQuery 4.0 正式发布:轻装上阵,拥抱现代 Web

📢 jQuery 4.0 发布

各位古早 Web 开发道友,还记得 JavaScript 中一大堆的 $ 符号吗😄。

2026年1月17日,jQuery 官方博客正式发布了 jQuery 4.0.0。作为前端开发史上最具影响力的 JavaScript 库之一,jQuery 这次的更新不是“小修小补”,而是一次面向未来的彻底重构

如果你还在用 jQuery 1.x/2.x 写 IE 兼容代码,那这次升级可能会让你“痛并快乐着”——因为 jQuery 4.0 彻底和旧时代说再见了。

🚀 jQuery 20 年


On January 14, 2006, John Resig introduced a JavaScript library called jQuery at BarCamp in New York City. Now, 20 years later, the jQuery team is happy to announce the final release of jQuery 4.0.0. After a long development cycle and several pre-releases, jQuery 4.0.0 brings many improvements and modernizations. It is the first major version release in almost 10 years and includes some breaking changes, so be sure to read through the details below before upgrading. Still, we expect that most users will be able to upgrade with minimal changes to their code.

Many of the breaking changes are ones the team has wanted to make for years, but couldn’t in a patch or minor release. We’ve trimmed legacy code, removed some previously-deprecated APIs, removed some internal-only parameters to public functions that were never documented, and dropped support for some “magic” behaviors that were overly complicated.


谷歌翻译
2006 年 1 月 14 日,John Resig 在纽约市的 BarCamp 大会上发布了名为 jQuery 的 JavaScript 库。如今,20 年过去了,jQuery 团队很高兴地宣布 jQuery 4.0.0 正式版发布。经过漫长的开发周期和多次预发布,jQuery 4.0.0 带来了诸多改进和现代化。这是近 10 年来的首个主要版本,其中包含一些重大变更,因此请务必在升级前仔细阅读以下详细信息。不过,我们预计大多数用户只需对现有代码进行少量修改即可完成升级。

许多重大变更都是团队多年来一直想实现但无法在补丁或小版本中实现的功能。我们精简了遗留代码,移除了一些之前已弃用的 API,移除了一些从未记录在文档中的公共函数内部参数,并放弃了对一些过于复杂的“魔法”行为的支持。


上面是发布 4.0 的博文开头的两段话,让我感触很深!jQuery 从 2006 开始发布,到今年,整整 20 年!我是 2009 年写 Web 时接触 jQuery,它简单统一的 API 大大缩减开发量,直到后面 Angular/Vue 之类的前端架构出来,才慢慢脱离 jQuery。

下图是官方博文贴出来团队合影,万分感谢他们的努力付出!

🔥 4.0 核心特性

移除 IE < 11 支持:迟到但必要的一步

IE<11 support removed

是的,你没看错。jQuery 4.0 不再兼容 IE6~IE10,最低要求为 IE11(虽然 IE11 也将在 2025 年后逐步退出历史舞台)。这意味着:

  • 代码体积更小(无需 polyfill 老浏览器)
  • 性能更高(可直接使用现代 DOM API)
  • 开发体验更清爽(告别 $.browser 等 hack)

💡 提示:如果你的项目仍需支持 IE8~IE10,请继续使用 jQuery 3.x 分支。

引入 Trusted Types 与 CSP:开始认真对待前端安全

Trusted Types and CSP

随着 Web 安全标准的演进,内容安全策略(CSP)已成为现代应用的标配。jQuery 4.0 内置对 Trusted Types 的支持,防止 XSS 攻击通过 innerHTMLjQuery.html() 等接口注入恶意脚本。

例如:

// 在启用 CSP 的环境下,以下代码将安全执行$('#content').html('<p>安全内容</p>');

jQuery 内部会自动通过 TrustedHTML 封装字符串,避免被 CSP 拦截。

✅ 这对金融、政务等高安全要求场景意义重大。

源码迁移到 ES Modules:向现代构建体系靠拢

jQuery source migrated to ES modules

jQuery 终于告别了传统的 IIFE(立即调用函数表达式)打包方式,整个代码库重构为 ES Modules。这意味着:

  • 支持 tree-shaking(Webpack/Rollup 可按需引入)
  • 更好的模块化开发体验
  • 为未来拆分功能包(如 @jquery/dom, @jquery/event)打下基础

你现在可以这样导入:

import $ from'jquery';// 或者只导入你需要的部分(未来可能支持)import{ on, off }from'jquery/events';

移除已废弃 API:减少模糊行为

Deprecated APIs removed

jQuery 3.x 中标记为 deprecated 的方法,在 4.0 中全部删除,包括:

  • .bind(), .unbind(), .delegate(), .undelegate()
  • .load(), .unload(), .error()(事件方法)
  • jQuery.isWindow(), jQuery.proxy() 等工具函数

移除 jQuery prototype 上的内部方法

Internal-only methods removed from jQuery prototype

过去,一些仅供 jQuery 内部使用的函数(如 .pushStack() 的某些变体)会意外出现在 $(). 的原型上。4.0 版本严格隔离内部逻辑,只保留公开 API,减少命名冲突和误用风险。

这不仅让 API 更清晰,也提升了库的封装性。

Focus 事件顺序遵循 W3C 规范

Focus event order now follows W3C spec

此前,jQuery 的 focusin/focusout 事件在部分浏览器中的触发顺序与原生行为不一致。4.0 完全对齐 W3C 标准,确保跨浏览器一致性。

Slim 构建更新:继续做减法

Updated slim build

jQuery Slim 版本(不含 ajaxeffects 模块)也同步升级到 4.0。如果你只用选择器和 DOM 操作,Slim 版体积进一步缩小至 ~25KB(gzip 后),非常适合轻量级项目。

🤔 总结

jQuery 4.0 并不是一次“重生”,而是一次面向现代 Web 的断舍离

  • 放弃老浏览器
  • 拥抱安全标准
  • 清理历史包袱
  • 对内部结构做工程化升级

它不会让 jQuery 再次成为前端主角,但至少保证了一点:

在仍然需要 jQuery 的地方,它不会成为技术债的放大器。

如果你维护的是老系统,无需着急升级
如果你维护的是长期项目,4.0 是一个更干净的起点

Read more

2025年10月21日-OpenSpec 实战:用规范驱动开发破解 AI 编程协作难题

2025年10月21日-OpenSpec 实战:用规范驱动开发破解 AI 编程协作难题

1.前言 OpenSpec 是一种 **规范驱动(spec‑driven)**‍ 的开源开发框架,主要面向 AI 编程助手(如 Claude Code、GitHub Copilot、Cursor 等)而设计。它通过在「共识规范 → AI 执行 → 自动验证」的闭环流程,帮助团队在 AI 参与的代码开发过程中明确需求、降低指令歧义、提升代码可追溯性与可维护性。 核心理念与工作流 1. 共识规范(Spec) * 先由人类与 AI 共同撰写结构化的需求规范(包括功能描述、输入/输出、边界条件、测试用例等)。 2. AI 执行 * AI 根据规范自动生成代码、文档或变更提案。 3. 自动验证

Flutter 三方库 flutter_dropzone 的鸿蒙化适配指南 - 掌握万物皆可拖拽的资源流转技术、助力鸿蒙大屏与 Web 应用构建极致直观的文件导入与交互体系

Flutter 三方库 flutter_dropzone 的鸿蒙化适配指南 - 掌握万物皆可拖拽的资源流转技术、助力鸿蒙大屏与 Web 应用构建极致直观的文件导入与交互体系

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 三方库 flutter_dropzone 的鸿蒙化适配指南 - 掌握万物皆可拖拽的资源流转技术、助力鸿蒙大屏与 Web 应用构建极致直观的文件导入与交互体系 前言 在 OpenHarmony 鸿蒙应用全场景覆盖、特别是适配鸿蒙桌面模式(Desktop Mode)、折叠屏大屏交互及鸿蒙 Web 版推送的工程实战中,“文件拖拽(Drag and Drop)”已成为提升生产力效率的标配功能。用户希望能够像在 PC 上一样,直接将图片或文档拖入应用窗口即可完成上传。如何实现这种跨越边界的直观交互?flutter_dropzone 作为一个专注于“拖放区域感知与文件流提取”的库,旨在为鸿蒙开发者提供一套标准的拖放治理方案。本文将详述其在鸿蒙端的实战技法。 一、原原理分析 / 概念介绍 1.1 基础原理 flutter_dropzone

前端如何实现 [记住密码] 功能

前端如何实现 [记住密码] 功能

文章目录 * 一、核心实现原理:不是记住,而是“提示填充” * 二、技术实现方案详解 * 方案一:依赖浏览器原生行为(最常用) * 方案二:前端持久化存储(需谨慎考虑) * 三、安全考量与实践准则 * 四、最佳实践总结 我们在访问网站的时候,发现很多的登录页面都是有记住密码的功能的。 如gitee码云的登录页面: 一、核心实现原理:不是记住,而是“提示填充” 首先要澄清一个常见的误解:前端的“记住密码”功能通常并不直接存储你的密码明文。它的核心原理是:请求浏览器将账号密码保存到其密码管理器中,并在下次检测到对应登录表单时,自动或提示用户填充。 下图清晰地展示了这一核心流程: 服务器浏览器密码管理器登录表单用户服务器浏览器密码管理器登录表单用户首次登录与保存后续自动填充1. 输入账号密码,勾选“记住我”2. 提交表单,发送登录请求3. 返回登录成功响应4. 触发浏览器提示:“是否保存密码?”5. 用户点击“保存”6. 将账号、

IntelliJ IDEA 打包 Web 项目 WAR 包(含 Tomcat 部署+常见问题解决)

IntelliJ IDEA 打包 Web 项目 WAR 包(含 Tomcat 部署+常见问题解决)

一、引言 对于 IntelliJ IDEA 新手来说,Web 项目 WAR 包打包常因步骤多、配置深而卡壳,且多数教程仅讲“打包”却忽略“部署验证”和“问题排查”。本文将从前置准备→核心配置→打包验证→Tomcat 部署→问题解决,带你完整走通流程,避开 90% 的常见坑。 二、前置准备:确认基础配置(避免起步就错) 在开始打包前,先检查 3 个关键前提,缺失任一环节可能导致后续操作失败: 1. 确认项目类型:打开项目结构(快捷键 Shift+Ctrl+Alt+S),在「Modules」中查看模块类型是否为「Web Application」,若不是,