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 视图(例如 PhoneGap 或 Cordova)中的基于 HTML 的应用程序,您知道使用哪些浏览器引擎,请使用 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 版本上的进一步进展,我们将更新大家有关代码更改、支持的浏览器等的信息。敬请关注!

jQuery 基金会采用 Mousewheel 插件

发布于 作者

jQuery 基金会很高兴地宣布 Brandon Aaron 已将他的 jquery-mousewheel 插件捐赠给 jQuery 基金会。Brandon 是 jQuery 团队的校友,他将插件留在了很好的状态,只有很少的未解决问题。这是一个 非常受欢迎的插件,通常与 jQuery UI 和其他小部件一起使用。

采用 mousewheel 插件是 jQuery 基金会使命的一部分,该使命旨在让 Web 开发人员的工作更轻松。我们希望确保 Web 开发人员可以使用此插件,并相信它将在未来得到支持。当然,我们无法独自做到这一点,并鼓励社区通过拉取请求和为 jQuery 基金会提供支持来参与其中。您可以在 https://github.com/jquery/jquery-mousewheel/ 找到它。

被遗弃或被忽视的开源项目可能是 Web 开发人员的眼中钉。当一名开发人员的个人项目变得非常流行时,它往往会超过该人员维护和支持它的能力。更多的开发人员应该像 Brandon 一样,在他们没有时间继续维护时,寻找其他人来接管。正如 Eric Raymond 在《大教堂与集市》中所说,“当你对一个程序失去兴趣时,你最后对它的义务就是把它交给一个胜任的继任者。”

jQuery.com 2014 年 9 月安全回顾

发布于 作者

在 9 月份的最后两周,我们由于一系列针对我们 Web 服务器的攻击而登上了头条新闻。今天,我们想向大家简要介绍一下我们网站的现状,并回顾一下过去两周发生的事情。

jQuery 遭围攻

9 月 18 日凌晨,我们遭遇到 DDoS 攻击,并因此下线。我们停机了几个小时。这些网站在 9 月 18 日晚些时候恢复运行,一切似乎都很正常。

后来,在 9 月 18 日下午,一家名为 RiskIQ 的安全公司联系我们,报告称他们的爬虫发现了我们的内容网站正在提供恶意软件。从来没有关于 jQuery 库或 CDN 遭到破坏的报告。在收到该报告后,我们立即销毁并重新映像了所有这些机器,吊销并重新颁发了所有相关的 SSL 证书,并确认当时没有提供可疑内容。从那时起,我们自己的团队以及来自 Mozilla 和 MaxCDN 的安全人员一直在努力分析日志并尝试确认这次攻击的影响。

9 月 23 日,RiskIQ 公开了他们的报告,该报告在当天在各种媒体和 Twitter 上引起轰动。第二天早上,9 月 24 日,随着针对我们财产的 DDoS 攻击在频率和强度上不断增加,CVE-2014-6271(也称为 ShellShock 漏洞)发布了。在我们继续回应媒体讨论,并向社区传达 9 月 18 日发生的事情时,我们再次成为一系列更为公开的攻击的受害者,这些攻击涉及反复破坏 jquery.com

对我们系统的调查尚未找到最初的攻击途径。但是,我们确实采取了一些措施来提高我们的安全性。例如,我们的一些 WordPress 安装程序已过时,我们所有的服务器都容易受到最近的 shell 漏洞的影响,NGINX 也略微过时,可能还有一些其他需要进行的补丁等。基础设施团队迅速行动起来,开始进行这些更改,并开始构建新的、完全修补和安全的服务器来托管我们的网站。这些更改似乎很有效,因为网站破坏停止了,我们也没有看到任何入侵的证据。

9 月 24 日晚些时候,一场大规模且持续不断的 DDoS 攻击开始了。它似乎会以波浪的形式出现,但直到 9 月 28 日晚些时候才停止。9 月 26 日和 27 日的大部分时间都花在了尝试实施各种产品和解决方案以使服务器保持活动状态上。我们夜以继日地努力使网站保持在线状态。我们必须赞扬 Corey Frang、Adam Ulvi、基础设施团队的其他成员以及其他人;他们彻夜工作,轮班工作,努力让我们保持在线状态。如果没有他们的努力,我们就不会有如此短暂的正常运行时间。我们采取的一个非常重要的步骤是联系 CloudFlare,他们慷慨而迅速地让我们获得了他们企业服务的访问权限,这对缓解这些攻击非常有帮助。

展望未来

jQuery 和 jQuery 基金会对 Web 生态系统至关重要,这一点从媒体的报道数量以及联系我们询问此次攻击相关问题的人员和组织的数量可以看出。jQuery 基金会每天都在努力维护和改进我们的项目以及围绕这些项目的基础设施。这项工作的目标是继续让 Web 开发人员的工作更轻松,并确保他们在标准和浏览器的世界中拥有发言权。但是,这些目标需要大量的资源。无论这些资源是通过公司员工或服务的专业知识访问提供,还是通过财务支持提供,我们都无法在没有开源社区和我们的支持成员的支持下继续这项重要的工作。

在整个事件中,我们多次被问到为什么没有部署 XYZ 服务,或者为什么我们的安全团队没有密切关注此类风险。简单的答案是我们的预算紧张,资源有限。我们的基础设施团队,以及我们的大多数团队,都是由志愿者组成的,他们自愿贡献时间来确保一切正常运行。 Heartbleed 和 ShellShock 漏洞是最近的例子,说明了当开源项目被认为理所当然并被认为没问题时,事情会变得多么糟糕。最终,一些东西会从裂缝中掉出来,当人们在业余时间尽力而为时,这些裂缝会变得越来越大,越来越频繁。

那么,您如何提供帮助呢?作为个人,可以参与我们的其中一个项目。我们始终需要帮助编写代码、设计、维护服务器、参与活动,等等。请查看 contribute.jquery.org 或者在我们的许多频道(列在 irc.jquery.org 上)中加入 IRC 聊天。作为组织,我们很乐意了解您愿意捐赠的任何服务、您可以腾出每周几个小时的任何开发人员或其他技术人员,或者您是否可以提供经济上的帮助。请向我们发送邮件至 membership@jquery.org,告诉我们您如何提供帮助。

我们不想过多地谈论这些攻击,因为它们一直都在发生,因为在黑客眼中,我们仍然是诱人的目标,他们甚至在本文撰写时仍在试图渗透我们的服务器。通过现在与社区分享所有这些信息,我们试图在解释发生的事情的必要性与公开声明我们认为已经控制住了局面的潜在反弹之间取得平衡。

话虽如此,我们现在确实认为我们已经控制住了局面。在此,我们非常感谢整个 jQuery 基础设施团队,他们撸起袖子,不懈地努力解决这些问题,使我们恢复到良好的状态。我们将继续保持警惕,以确保我们为用户社区提供的所有资源的可靠性和安全性。