关于戴夫·梅斯文

首席技术官,PC Pitstop http://pcpitstop.com

jQuery 3.0:下一代

发布日期: 作者:

很难相信 jQuery 发布已经近八年了。多年来,Web 开发发生了很大变化,jQuery 也随之改变。在这段时间里,团队一直试图在保持与过去代码的兼容性与支持当前最佳 Web 开发实践之间取得平衡。

其中一项最佳实践是语义化版本控制,简称 semver。从实际意义上讲,semver 使开发人员(以及构建工具)能够了解迁移到新软件版本所涉及的风险。版本号采用 MAJOR.MINOR.PATCH 的形式,其中三个组件都是整数。在 semver 中,如果 MAJOR 编号发生变化,则表示 API 中存在重大变更,因此开发人员需要小心。

版本控制的概念在 jQuery 中变得更加细致,其中浏览器兼容性与 API 兼容性一样重要。为了创建一个更精简的 jQuery,团队从 2013 年开始发布两个版本。第一个版本保持 1.x 行的编号,目前为 1.11.1,保持与最大数量的浏览器的兼容性。第二个版本从 2.0.0 开始,现在是 2.1.1,放弃了对 IE8 或更低版本浏览器的支持,以简化代码。jQuery 的 1.x 和 2.x 版本都具有相同的公共 API,尽管它们在内部实现上有所不同。

我们的下一个版本将使用不同的命名法。与之前一样,将发布两个不同的文件。目前 1.11.1 版本的继任者将成为 **jQuery Compat 3.0**。jQuery 2.1.1 的继任者将是 **jQuery 3.0**。npm 和 Bower 上有两个不同的 *包*,但它们共享相同的版本以表明它们具有相同的 API 行为。

我们还将从这些版本开始重新调整我们的浏览器支持策略。主要的 jQuery 包通过支持在发布时常见的常青浏览器(特定浏览器的当前版本和上一个版本)来保持精简。我们可能会根据市场份额在本包中支持其他浏览器。jQuery Compat 包提供更广泛的浏览器支持,但代价是文件大小更大,性能可能更低。

尽管版本号大幅度跳跃,但我们预计大多数当前 jQuery 代码不会出现太多迁移问题。我们只是在这个版本升级中成为良好的 semver 公民。使用新版本的 jQuery Migrate 插件 将检测到删除弃用方法等更改,以便轻松查找和修复它们。我们将在以后的博文中提供有关更改的更多详细信息。

因此,以下是 jQuery API 3.0 版的 TL;DR

  • 如果您需要支持最广泛的浏览器,包括 IE8、Opera 12、Safari 5 等,请使用 jQuery-Compat 3.0.0 包。我们建议大多数网站使用此版本,因为它为所有网站访客提供了最佳兼容性。
  • 如果您的网站仅为常青领先的浏览器构建,或者是一个包含在 Web 视图中的基于 HTML 的应用程序(例如 PhoneGap 或 Cordova),并且您知道使用的是哪些浏览器引擎,请使用 jQuery 3.0.0 包。
  • 在我们另行宣布之前,两个包都将在相应的编号的主版本和次版本中包含相同的公共 API。这应该使开发人员能够轻松地在两者之间切换,并最大限度地兼容第三方 jQuery 插件。

在未来的每个版本中,我们都将在 npm 和 bower 上提供这两个包。这两个包也将作为单文件构建在 jQuery CDN 上提供。从那里使用它们就像根据您的需要包含 jquery-compat-3.0.0.js 或 jquery-3.0.0.js 一样简单。我们已经与管理 Google CDN 的人员进行了交流,他们也将支持这两个包。

随着我们在 3.0 版方面取得进一步进展,我们将向大家更新有关代码更改、支持的浏览器等方面的详细信息。敬请关注!

招募志愿者:Trac 增强功能

发布日期: 作者:

jQuery 和 jQuery UI 团队使用 Trac 进行错误报告和跟踪。jQuery Core 错误跟踪器 非常需要一位 Trac 专家来帮助我们迁移到 Trac 1.0 并修复一些我们一直遇到的烦人的问题。如果您是 Trac 大师,或者只是精通 Trac 设置/配置并能胜任此挑战的人,我们很乐意与您交谈!请向 dave(at)jquery.com 发送消息,我们将与您联系。

由于有些人不可避免地会问:GitHub 在问题和提交之间实现了出色的集成,但在搜索和报告方面,它远不如 Trac 强大。此外,我们的项目拥有超过七年的历史,包含数千条错误报告,其中包含重要的数据。将这些数据导入 GitHub 问题并对其进行整理以使其在导入后变得有用,这并非易事。我们认为,坚持使用 Trac 是为我们提供所需错误跟踪功能的最省力方法。

不要使用 jquery-latest.js

发布日期: 作者:

本周早些时候,jQuery CDN 出现了一个问题,导致 jquery-latest.js 和 jquery-latest.min.js 文件在一些地区无法访问数小时。(这不是 CDN 本身的问题,而是提供 CDN 文件的存储库的问题。)尽管我们始终希望实现 100% 的正常运行时间,但这次停机事件强调了使用此文件的生产网站数量之多。因此,让我们明确一点:**在生产网站上不要使用 jquery-latest.js。**

我们知道 jquery-latest.js 被滥用了,因为 CDN 统计数据 显示它是使用最频繁的文件。如果它只被开发人员用来创建本地副本,情况不会如此。jquery-latest.js 和 jquery-latest.min.js 文件旨在提供一种简单的方法来下载 jQuery 核心库的最新发布版本。相反,一些开发人员将此版本直接包含在其生产网站中,这会导致用户在每次发布新版本的 jQuery 时面临网站崩溃的风险。团队当然会尽力将这些风险降到最低,但 jQuery 生态系统如此庞大,我们无法在发布新版本之前对所有内容进行检查。

为了减轻“破坏 Web”的风险,jQuery 团队早在 2013 年就决定 jquery-latest.js 无法升级到 2.0 分支,尽管从技术上讲这是最新版本。这样做会导致太多网站在使用旧版 Internet Explorer 时莫名其妙地停止工作,而且许多这些网站可能目前没有得到维护。

随着 jQuery 的普及不断增长,即使是这种保障措施也似乎不足以防止对 https://code.jqueryjs.cn/jquery-latest.js 的粗心使用。因此,我们决定停止更新此文件,以及缩小后的副本,将这两个文件永远保留在 1.11.1 版本。最新发布的版本始终可以通过 jQuery 核心下载页面CDN 主页 获取。开发人员可以从这些页面之一下载最新版本,或在脚本标记中直接从 jQuery CDN 按版本号引用它。

Google CDN 团队加入了我们,共同努力防止无意中破坏 Web,并且不再更新 https://ajax.googleapis.ac.cn/ajax/libs/jquery/1/jquery.js 上的文件。该文件也将锁定在 1.11.1 版本。但是,请注意,此文件当前的缓存时间非常短,这意味着当您请求完整版本(例如 1.11.1)时,您将失去 CDN 在您请求完整版本(例如 1.11.1)时提供的长时间缓存带来的性能优势。

因此,请广为传播!如果您看到某个网站在其脚本标记中直接使用 jQuery CDN 的 jquery-latest.js 或 Google CDN 等效文件,请告知他们应该更改为特定版本。如果您需要最新版本,请从下载页面或我们的 CDN 页面获取。对于 jQuery 和 Google CDN,在 <script> 标记中引用文件时,始终提供完整的版本号。谢谢!

jQuery 1.11.1 和 2.1.1 发布

发布日期: 作者:

啊,空气中弥漫着春天的气息,新的 jQuery 1.11.1 和 2.1.1 正在盛开。这些是次要补丁版本,不应造成任何重大兼容性问题。举办一个五月的庆祝派对,邀请朋友来参加测试。如果您发现了问题,请在 bugs.jquery.com 上告知我们,并确保使用 jsfiddle.netjsbin.com 提供简单的测试用例来演示问题。

如果您愿意,可以直接从 jQuery CDN 包含这些文件,或者将它们复制到您自己的本地服务器。1.x 分支包括对 IE 6/7/8 的支持,而 2.x 分支不支持。

https://code.jqueryjs.cn/jquery-1.11.1.js
https://code.jqueryjs.cn/jquery-2.1.1.js

Google 和 Microsoft CDN 今天将获得它们的副本,就像您一样,因此请给他们几天时间发布文件,不要着急。如果您迫切需要快速入门,请在它们有机会发布之前直接使用我们 CDN 上的文件。

缩小后的文件(用于生产环境)和映射文件(用于调试)也可用。如果您想使用映射文件调试缩小后的代码,请复制缩小后的文件并在文件末尾添加 //# sourceMappingURL 注释。
https://code.jqueryjs.cn/jquery-1.11.1.min.js
https://code.jqueryjs.cn/jquery-1.11.1.min.map
https://code.jqueryjs.cn/jquery-2.1.1.min.js
https://code.jqueryjs.cn/jquery-2.1.1.min.map

非常感谢所有参与此版本测试、报告错误或提交补丁的人,包括 Benjy Cui、Christian Kosmowski、Jason Frank、Julian Aubourg、Jens Simon、John Hoven、John Madhavan-Reese、Jonathan Sampson、Jörn Zaefferer、Leo Balter、Louis-Rémi Babé、Michał Gołębiowski、Oleg Gaidarenko、Philip Jägenstedt、R.G. Otten、Rhys Evans、Richard Gibson、Rick Waldron、Rob Graeber、Rodrigo Rosas、Roman Reiß、S. Andrew Sheppard、Scott González 和 Timmy Willison。

以下是自上次正式版本 (1.11.0 和 2.1.0) 以来的更改。

jQuery 1.11.1 和 2.1.1 共通

Ajax

属性

构建

核心

Css

数据

尺寸

效果

事件

其他

jQuery 2.1.1

Ajax

属性

核心

Css

事件

操作

选择器

支持

jQuery 1.11.1

Css

jQuery 1.11.1 RC2 和 2.1.1 RC2 发布

发布日期 作者

春天到了,jQuery 1.11.1 和 2.1.1 的这些 **候选版本** 也欣欣向荣。这意味着什么?是时候认真测试了!我们真的希望我们的下一个版本稳定可靠,为此我们需要您的帮助。请在您的项目和页面中试用这些文件,只需快速测试一下即可。如果您发现任何问题,请在 bugs.jquery.com 上告诉我们。

测试版文件位于 jQuery CDN 上,您也可以直接从 CDN 包含它们(但不要在生产环境中使用它们!)。和往常一样,1.x 分支包含对 IE 6/7/8 的支持,而 2.x 分支则不支持。

https://code.jqueryjs.cn/jquery-1.11.1-rc2.js
https://code.jqueryjs.cn/jquery-2.1.1-rc2.js

以下是自上次正式版本 (1.11.0 和 2.1.0) 以来的错误修复。

jQuery 1.11.1 RC2 和 2.1.1 RC2 共通

Ajax

属性

构建

核心

Css

尺寸

事件

其他

jQuery 1.11.1 RC2

Css

jQuery 2.1.1 RC2

Ajax

属性

核心

Css

事件

操作

选择器

jQuery 1.12 及更高版本中的浏览器支持

发布日期 作者

随着微软本月结束对 Windows XP 的支持,我们正在向 jQuery 社区发布关于浏览器支持更改的长期通知。

**首先,不要惊慌!** 就 jQuery 至少六个月内可以运行的浏览器而言,实际上没有任何变化。我们的目标是让 Web 开发社区中的每个人都知道 jQuery 团队在未来一年内打算做什么,以便您能够相应地进行规划。

哪些方面将发生变化?

目前还没有确定日期,但我们计划在今年发布 jQuery 核心版本 1.12 和 2.2。jQuery 1.13/2.3 将在 2015 年某个时候发布。

**jQuery 1.12:** 这将是最后一个支持 Internet Explorer 6 和 7 的版本。从今天起,将不再接受针对它们的特性请求或错误修复。针对这些浏览器的严重回归问题将在补丁版本中修复(例如,1.12.1)。jQuery 1.13 将支持 IE8 作为其最低浏览器。

**jQuery 1.12 和 2.2:** 这将是最后一个支持 Opera 12.1x 和 Safari 5.1 的版本。从今天起,将不再接受针对它们的特性请求或错误修复。针对这些浏览器的严重回归问题将在补丁版本中修复(例如,1.12.1 或 2.2.1)。

**jQuery 1.13 和 2.3:** 我们将删除特定于我们不再支持的浏览器的 API 符合性的补丁和解决方法,以简化代码库。

**您需要做的事情:** 如果您的项目使用的是拉取最新 jQuery 版本的包管理器,请记住,从 1.12 到 1.13 或从 2.2 到 2.3 的升级将减少浏览器覆盖范围。如果您需要支持旧浏览器,则可能需要停留在 1.12 或更低版本。有关如何执行此操作的详细信息,请参阅您的包管理器的说明。

“支持”的含义

定义“支持”的含义比您想象的要复杂。在“未测试的代码就是有问题的代码”的假设下,jQuery 核心团队更倾向于说,如果项目定期针对该浏览器运行单元测试,则我们完全支持该浏览器。单元测试确保每个 API 在所有浏览器中都返回一致的结果集。

即使我们支持某个浏览器,我们也可能无法合理地修复所有错误。例如,Internet Explorer 6 到 11 异步触发 focus 和 blur 事件,使它们看起来同步所需的代码将非常多。iOS 上的 Safari 不支持onbeforeunload 事件,而这个事件几乎不可能进行模拟。直到上个月,Firefox 才开始尊重fieldset 元素上的overflow: hidden。我们努力与浏览器供应商合作来修复这些错误。

对于我们没有正式支持的浏览器,我们仍然努力消除“致命错误”,例如初始化期间的脚本错误,这些错误会导致页面完全无法使用。如果您想了解我们为解决晦涩难懂的问题所付出的努力,请查看此在日文手机上发生的 Android 2.3 浏览器崩溃错误,该错误非常间歇性且难以诊断。在几名用户的帮助下,我们终于找到了导致问题的根源并找到了解决方法。

**归根结底:** 我们只能确保我们持续进行单元测试的浏览器和环境的高质量持续支持。但是,我们会尽力为任何流行环境中的浏览器提供一定程度的支持。最高优先级将是确保浏览器不会抛出错误。对确保旧版或罕见浏览器产生与现代浏览器完全相同的 API 结果的优先级将较低。

现在谁还在使用旧浏览器?

查看浏览器统计数据时,不要看它们**现在**在什么位置。想想它们在 2015 年会处在什么位置。总而言之,我们认为到那时,所有这些浏览器的市场份额都会降到个位数。如果 StatCounter 的数据可信,那么这些浏览器现在已经处于这个水平,并且当 jQuery 最终停止支持它们时,它们的普及率会更低。

但最终,整个互联网的统计数据并不重要。真正重要的是您的网站访问者或 Web 应用程序用户是否正在运行特定的浏览器。只有您才能回答这个问题。升级到新 jQuery 版本的决定始终掌握在您作为开发者的手中。

浏览器一致性的神话

今天以及在未来很长一段时间内,jQuery 仍然会包含数十个浏览器特定的修复程序,以规范行为。目前,对于 jQuery 2.x 来说,最麻烦的浏览器是 Android 2.3 中的浏览器。该版本仍然是 Android 安装基数的重要组成部分(占 20% ),并且**仍然被用于新移动产品中**。那里不支持一些 JavaScript 功能,例如element.classList,它也是最后一个仍然需要为标准化 CSS 属性使用-webkit-前缀的浏览器。

jQuery 项目的宗旨是让您的开发生活更轻松,因此,我们将继续支持必要的修复程序,以消除流行浏览器上出现的不一致问题。随着特定浏览器市场份额的减少,我们将抓住机会删除它们的补丁并停止对它们的 支持,从而简化我们的代码库。这会使所有 jQuery 页面稍微快一点。

jQuery 1.11.1 Beta 1 和 2.1.1 Beta 1 发布

发布日期 作者

自从我们上一个版本逃离了漫漫冬日的魔爪已经过去几个月了,因此我们认为应该发布一个测试版,它收集了最近报告和修复的错误。大多数这些错误的严重程度和频率都很低,但如果你没有受到影响,就更容易说出来!

与我们所有的测试版发布一样,我们发布它们是为了让您能够针对它们进行测试,并让我们知道它们是否修复了错误,而不会引入新的错误、意外行为或回归。请帮助我们,将这些文件放到您的项目和页面中进行快速测试。如果您发现任何不希望有的更改,请在 bugs.jquery.com 上告诉我们。

测试版文件位于 jQuery CDN 上,您也可以直接从 CDN 包含它们(但不要在生产环境中使用它们!)。和往常一样,1.x 分支包含对 IE 6/7/8 的支持,而 2.x 分支则不支持。

https://code.jqueryjs.cn/jquery-1.11.1-beta1.js
https://code.jqueryjs.cn/jquery-2.1.1-beta1.js

以下是这些版本解决的错误。

1.11.1/2.1.1 Beta 1 共通

Ajax

属性

构建

核心

Css

事件

未分类

jQuery 1.11.1 Beta 1

Css

jQuery 2.1.1 Beta 1

Ajax

属性

核心

Css

事件

操作

选择器

支持

jQuery 1.11 和 2.1 发布

发布于 作者

在美国东部,我们正在零度以下的温度中瑟瑟发抖,应对雪暴后的余波。尽管如此,没有什么比新鲜发布的版本更能振奋人心了——不,是两个版本!jQuery 1.11.0 和 2.1.0 准备在这些黑暗的冬夜为你带来温暖。

您可以像往常一样从我们的 CDN 获取文件,并直接使用它们或下载到您自己的服务器上。我们的 下载页面 包含您需要的所有文件和信息,包括指向其他提供这些文件的 CDN 的链接。请给他们几天时间来更新!

对于那些一段时间没有关注的人来说,jQuery 的 1.x 和 2.x 分支都支持所有最新的现代浏览器,并且具有相同的 API。1.x 分支,这次是 1.11.0,增加了对旧版 Internet Explorer(IE6、IE7 和 IE8)的支持。2.x 分支,今天由 2.1.0 扮演,增加了对非传统 Web 环境的支持,例如 node.js 和 Chrome 和 Firefox 的浏览器插件。

jQuery 在 1.9 版本中进行了大规模的清理,删除了一些功能。如果您尚未从早期版本迁移,请查看 jQuery 1.9 升级指南,并让 jQuery Migrate 插件 为您完成所有繁重的工作。

有什么新内容?

您可能想知道这些版本中有哪些伟大的新东西在等着您。也许您担心它们会带来很多重大更改。您只知道项目负责人会建议您立即更新。就这样毁了您的一周时间,还有去佛罗里达州的旅行。好吧,不要担心!我们修复了不少错误,但其他功能和更改主要是组织性的,不会影响 API 的行为。您的代码不应该崩溃,它应该只是运行得更快一点。以下是亮点

减少强制布局: 在此版本中,我们宣布对可能无意中迫使浏览器进行耗时布局的地方宣战。我们找到了一些并消除了一个,它可能会在更改类名时发生。这可以为某些页面带来巨大的性能提升。

细粒度的自定义构建: 我们的模块化现在由 AMD 定义,并且当空间有限时,更容易构建库的小子集。如果您想了解更多,我们已将详细信息隐藏在 README 文件 中,那里从来没有人会去看。

降低启动开销: 新的模块化和避免强制布局使我们能够重构我们的功能检测,以便它们在第一次需要时运行。如果您从未调用需要该功能检测的 API,您就永远不会运行该代码。以前,我们在页面加载时运行所有功能检测,这会导致延迟,通常很小,但加起来很大——尤其是在移动平台上。

发布到 npm: 我们的版本现在将 发布到 npm,以便您可以在 node 或 browserify 中使用它们。1.x 和 2.x 分支都可以在 npm 上获得,但请记住,只有 2.x 分支支持在 node 中运行。

发布到 Bower: 我们现在使用 Bower 进行内部依赖管理,包括 Sizzle,因此您将在 Bower 上看到 jQuery 版本,只要它们可用。

有些人询问是否在 jQuery 库中支持其他包管理器,但我们决定目前只支持我们在内部使用的两个管理器。有十多个包/依赖管理器,如果它们都能就项目发布信息的单一格式达成一致,那将很方便。我们不希望包管理器的开销转移到像 jQuery 这样的单个项目。

尽管新事物总是显得光鲜亮丽,但我们不喜欢忽视人们在使用上一个版本时遇到的错误和不便之处。我们努力减少了错误列表,并解决了其中不少错误。我们甚至修复了一个只在 IE6 中发生的错误,迟到总比不到好!

源映射更改

此版本不包含压缩文件中的源映射注释。源映射已被证明对开发人员来说是一个非常麻烦和令人困惑的事情,在 StackOverflow 等论坛上产生了 数百名困惑的开发人员,并导致有些人认为 jQuery 本身已损坏。

我们仍将生成和分发源映射,但如果您使用的浏览器不支持手动关联映射文件(目前,没有浏览器支持),则需要在压缩文件的末尾添加适当的源映射注释。如果您使用自定义构建过程生成自己的 jQuery 文件,源映射注释将出现在压缩文件中,并且会生成映射;您既可以保留它并使用源映射,也可以将其编辑掉并完全忽略映射文件。

我们希望将来能够恢复并改进源映射支持,但目前设计和实现似乎都不适合像 jQuery 这样的情况,因为 jQuery 在 CDN 上有广泛分发的文件。我们希望源映射(以及支持它们的浏览器)能够优雅地处理文件重命名或丢失文件的情况。有关更多信息,请查看我们的 错误工单

致谢

如果没有许多人的辛勤工作,这个版本不可能实现。感谢所有报告错误、试用预发布文件或提供建设性批评的人。特别感谢 Alex Robbin、Amey Sakhadeo、Anthony Ryan、Aurelio DeRosa、Chris Antaki、Chris Price、Christopher Jones、Corey Frang、Daniel Herman、Domenic Denicola、Dominik D. Geyer、Forbes Lindesay、George Kats、Guy Bedford、Ilya Kantor、Jakob Stoeck、Jeremy Dunck、John Paul、Julian Aubourg、Jörn Zaefferer、Lihan Li、Marian Sollmann、Markus Staab、Marlon Landaverde、Michał Gołębiowski、Mike Sidorov、Oleg Gaidarenko、Richard Gibson、Rick Waldron、Ronny Springer、Scott González、Sindre Sorhus、T.J. Crowder、Terry Jones、Timmy Willison 和 Timo Tijhof。Colin Snover 在 #jquery-dev 中的评论也为团队提供了难得的幽默。

变更日志

jQuery 1.11 和 2.1(两者共有的)

Ajax

属性

构建

核心

Css

数据

效果

事件

操作

其他

选择器

支持

jQuery 1.11

Ajax

属性

构建

核心

效果

支持

jQuery 2.1

Ajax

构建

核心

事件

jQuery 1.11.0 RC1 和 2.1.0 RC1 发布

发布于 作者

我们即将发布 jQuery 1.11 和 2.1 的最终版本!在我们发布之前,我们希望您对我们的工作进行理智检查。如果您现在检查一下,而不是等到发布后才检查,这将为我们双方节省大量工作。如果有什么不对劲,我们可以在数百万人不得不面对它之前进行修复!

测试很容易,只需在 jQuery CDN 上使用以下文件之一即可

我们还 在 npm 上发布了这些文件,供那些使用它进行依赖管理的人使用。此版本应该与 browserify 正常配合使用。

此版本主要集中在修复错误和支持更多依赖项管理器,如果您已经迁移到 1.9 或更高版本,则不应该出现兼容性问题。但这就是我们发布候选版本的原因,我们希望它尽可能稳定。如果您遇到问题,请在 bugs.jquery.com 报告。

继续测试吧!

变更日志

jQuery 1.11 RC1 和 jQuery 2.1 RC1 共有

Ajax

属性

构建

核心

Css

数据

效果

事件

其他

选择器

支持

jQuery 1.11 RC1

Ajax

核心

效果

支持

jQuery 2.1 RC1

Ajax

构建

核心

事件

jQuery 基金会与标准

发布于 作者

大多数 Web 开发人员从 jQuery 的根源来考虑它,作为一个试图将混乱的 API 和跨浏览器差异的集合理顺的库。虽然这是 jQuery 被设计来做的事情之一,而且现在仍然在做,但它并不是唯一的。jQuery 定义了一个有用的 API,它让操作单个元素和操作十几个元素一样简单。jQuery 简化了冗长的 DOM API 名称并消除了繁琐的样板代码,从而使编写和阅读代码更容易。jQuery 在标准 API 之外添加了功能,用于 Web 开发人员经常需要完成的工作。

简而言之,jQuery 不仅仅是浏览器的 API 修理工。在我们需要修复问题的地方,我们会这样做。但我们更感兴趣的是让浏览器修复它们自己的问题,以及通过塑造未来的标准来避免问题,这样原生 API 就可以从一开始就正常工作。然后,我们都可以在这个坚实的基础之上构建有用的功能。

jQuery 团队成员带来了大量的现实世界经验,这些经验引导着标准朝着正确的方向发展。最早的例子是 querySelectorAll 方法,John Resig 指出 实现并非 JavaScript 开发人员所需。不幸的是,在 querySelectorAll 的情况下,修复这些问题已经太晚了。

jQuery 如何塑造标准

为了对新兴标准提供意见,jQuery 基金会于去年加入了万维网联盟 (W3C) 和 ECMA 国际组织。事实上,这是基金会成立的主要原因之一。W3C 和 ECMA 成员往往是制造浏览器和商业软件的公司代表。我们相信,我们将基层 Web 开发人员的声音带到了标准化过程中。

Yehuda Katz 和 Rick Waldron 一直积极参与 ECMA TC39 小组,该小组正式定义了被称为 EcmaScript 但我们称之为 JavaScript 的语言。Rick 优秀的 会议记录 可以让你深入了解他们在面对面会议期间进行的讨论。

Scott González 和 Kris Borchers 一直致力于完善 指针事件标准。它简化、规范化和理顺了指针技术的处理,以便开发人员不必为触摸和鼠标提供不一致的(且相互冲突的!)事件模型。在过渡期间,开发人员将要处理三种指针模型——鼠标、触摸和指针。jQuery 和 jQuery UI 希望简化这种过渡到标准的过程。

Julian Aubourg 一直参与 XMLHttpRequest 标准 的修订,这是一个由 jQuery 的 $.ajax 实现经过实战考验的职位。了解 jQuery 绕过的所有问题为他提供了经验,可以避免将来出现相同的问题。

Scott González 和 TJ VanToll 一直积极参与定义 HTML5 输入类型(例如 <input type=”date”>),根据 jQuery UI 的经验提供 实际输入。TJ 在波特兰 jQuery 大会上的 演讲 很好地介绍了当今使用 HTML5 输入类型的陷阱,以及 Web Components 等新兴标准,这些标准可以使 Web 开发人员更容易使用。

jQuery 基金会也是无障碍的坚定倡导者;我们希望让 Web 开发人员能够轻松地触达所有用户,包括有视力或行动障碍的用户。W3C 通过 Web 无障碍倡议,特别是通过 可访问的富互联网应用程序 (ARIA) 来解决这些问题。jQuery UI 小部件正在合并 ARIA 属性,基金会成员 Deque Systems 为 jQuery 无障碍问题赞助了多个活动。

最后,我们协调并传递报告给 jQuery 的错误,这些错误是由于特定浏览器中的标准违规导致的。随着大多数浏览器每隔几个月更新一次,对于 jQuery 来说,对临时问题进行大规模和复杂的错误修复通常没有意义。但我们致力于尽快让浏览器制造商修复这些错误。

以标准为驱动的 jQuery 未来

jQuery 不是一个强势的框架,它不需要控制所有 DOM。在大多数情况下,你可以(而且通常应该)将 DOM API 与 jQuery 一起使用。这始终是预期设计;你可以在事件处理程序内的 this 对象是一个 DOM 元素(而不是 jQuery 对象)等方面看到这一点。jQuery 需要控制的唯一地方是当 DOM 中的元素通过 .html() 等方法替换或通过 .empty() 等方法删除时,以便清除任何关联的 jQuery 数据。

类似地,内置的 HTML5 输入类型可以与 jQuery UI 输入小部件共存。jQuery UI 致力于提供用户界面小部件,这些小部件提供出色的功能,同时不会牺牲无障碍性,本质上支持 ARIA 等标准。

jQuery 基金会希望开发人员能够直接使用基于标准的 API 和尖端的 JavaScript 功能。好消息是社区正在朝着这个目标取得进展,jQuery 团队成员通过参与标准化过程提供了帮助。然而,Web 标准和实践的不断发展,加上充满活力的第三方插件和知识生态系统,仍然提供了使用 jQuery 的令人信服的理由。Web 开发人员应该拥有两者兼具的优势。