
作为一些资深的开发者,对于JQuery,应该熟知,想当年也是风靡一时,对于很多人来说jQuery已经过时了,但是别人现在还是有一席之地的,最近jQuery 4.0.0 新版发布了,看看带来了什么体验吧。
2006 年 1 月 14 日,John Resig 在纽约市的 BarCamp 大会上发布了名为 jquery 的 javascript 库。如今,20 年过去了,jquery 团队很高兴地宣布 JQuery 4.0.0 正式版发布。经过漫长的开发周期和多次预发布,jQuery 4.0.0 带来了诸多改进和现代化。这是近 10 年来首个主要版本,其中包含一些不兼容的变更,因此请务必在升级前仔细阅读以下详细信息。不过,我们预计大多数用户只需对现有代码进行少量修改即可完成升级。
许多重大变更都是团队多年来一直想做,但之前无法通过补丁或小版本更新实现的。我们精简了遗留代码,移除了一些之前已弃用的 API,移除了一些从未编写文档的公共函数内部参数,并放弃了对一些过于复杂的“魔法”行为的支持。
与往常一样,该版本已发布在我们的 CDN和 npm 包管理器上。其他第三方 CDN 可能很快也会提供该版本,但请记住,我们无法控制他们的发布计划,他们需要一些时间。以下是 jQuery 4.0.0 的主要更新内容。
已移除对 ie11 以下版本的支持
jQuery 4.0 不再支持 ie 10 及更早版本。有些人可能会问,为什么我们没有移除对 IE 11 的支持。我们计划分阶段移除对 IE 11 及更早版本的支持,下一步将在 jQuery 5.0 中发布。目前,我们将首先移除专门支持 IE 11 及更早版本的代码。
我们也停止了对其他一些非常老旧浏览器的支持,包括 Edge Legacy、iOS 版本低于最近 3 个版本、firefox 版本低于最近 2 个版本(Firefox ESR 除外)以及 Android 浏览器。您无需进行任何更改。如果您需要支持这些浏览器,请继续使用 jQuery 3.x 版本。
可信类型和云安全策略
jQuery 4.0 增加了对TRusted types的支持,确保用Trustedhtml包装的 HTML可以作为 jQuery 操作方法的输入,而不会违反reqUIre-trusted-types-for内容安全策略指令。
此外,虽然一些 Ajax请求已经使用 ` <script><script>` 标签来维护诸如 `<script>` 之类的属性crossDOMAIn,但我们现在已将大多数异步脚本请求切换到使用 `<script>` 标签,以避免因使用内联脚本而导致的任何 CSP 错误。仍然有一些情况下会使用 XHR 进行异步脚本请求,例如当"headers"传递了 `--xhr` 选项时(建议改用 `--xhr`!),但我们现在尽可能scriptattrs使用 ` <script>` 标签。<script>
jQuery 源代码已迁移到 ES 模块
那天是个特殊的日子,分支上的 jQuery 源代码从AMDmain迁移到了ES 模块。jQuery 源代码一直随 jQuery 版本一起发布在 npm 和 GitHub 上,但如果没有RequireJS( jQuery 的首选构建工具),就无法直接作为模块导入。此后,我们改用Rollup来打包 jQuery,并且所有测试都单独针对 ES 模块运行。这使得 jQuery 能够通过 Rollup 与现代构建工具、开发工作流程和浏览器兼容。<script type=module>
已移除已弃用的 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。
请改用原生等效项,例如array.isArray(),,,和。JSON.parse()string.prototype.trim()date.now()
移除已弃用的 API 以及移除支持旧版 IE 的代码,结果是压缩后的文件大小减少了 3k 字节以上。
从 jQuery 原型中移除了仅供内部使用的方法
jQuery 原型长期以来都包含一些数组方法,这些方法与其他 jQuery 方法的行为截然不同,并且一直仅供内部使用。这些方法包括 push、sort 和 splice。现在它们已从 jQuery 原型中移除。如果您之前使用这些方法,现在$elems.push( elem )可以将其替换为[].push.call( $elems, elem )。
焦点事件顺序现在遵循 W3C 规范
长期以来,浏览器对于 focus 和 blur 事件的顺序(包括 focusin、focusout、focus 和 blur)一直存在分歧。最终,所有 jQuery 4.0 支持的浏览器的最新版本都采用了统一的事件顺序。遗憾的是,这与 jQuery 多年前选择的统一顺序有所不同,因此这是一个破坏性变更。不过,至少现在大家都达成共识了!
从 jQuery 4.0 开始,我们将不再覆盖原生行为。这意味着除 IE 之外的所有浏览器都将遵循当前的 W3C 规范,即:
模糊
焦点消失
重点
聚焦
jQuery 早期版本的事件处理顺序是:focusout、blur、focusin、focus。讽刺的是,唯一遵循旧版 W3C 规范(2023 年更新之前)的浏览器是 Internet Explorer。
更新后的纤薄机身
jQuery 4.0.0 移除了 Deferreds 和回调函数,使得精简版体积进一步缩小(压缩后仅约 19.5KB!)。Deferreds 早已支持Promises A+ 标准,因此在大多数情况下都可以使用原生 promises,并且除了 IE11 之外,jQuery 支持的所有浏览器都支持原生 PRomises。Deferreds 确实有一些原生 Promises 不支持的额外功能,但大多数用法都可以迁移到 Promise 方法。如果您需要支持 IE11,最好使用主版本或添加原生 Promises 的 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
纤薄机身
有时您并不需要 ajax,或者您更倾向于使用众多专注于 Ajax 请求的独立库。此外,使用 CSS 和类操作的组合来实现网页动画通常更为简便。最后,jQuery 支持的所有浏览器(IE11 除外)现在都全面支持原生 Promise,因此在大多数情况下不再需要 Deferred 和 Callback。除了包含所有模块的常规 jQuery 版本外,我们还发布了一个不包含这些模块的“精简版”。如今,jQuery 的大小很少会成为加载性能问题,但精简版比常规版本小约 8KB(Gzip 压缩后)。这些文件也可通过 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 上。您可以在HTTPs://jquery.com/download/找到所有获取 jQuery 的方法。公共 CDN 已于今日收到更新,请耐心等待几天时间完成文件发布。如果您急于快速上手,请先使用我们 CDN 上的文件,直到他们完成更新。








网友评论文明上网理性发言已有0人参与
发表评论: