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 包仍然很小巧,通过支持当时常见的 evergreen 浏览器(特定浏览器的当前和先前版本)来实现。我们可能会根据市场份额支持额外的浏览器。jQuery Compat 包提供更广泛的浏览器支持,但代价是更大的文件大小和潜在的更低性能。

尽管版本号有很大的跳跃,但我们预计大多数当前 jQuery 代码的迁移问题不会很多。我们只是在遵守良好的 semver 规范。删除已弃用方法等更改将通过新的 jQuery Migrate 插件 检测到,以便轻松找到并修复。我们将在未来的博客文章中提供有关更改的更多详细信息。

因此,jQuery API 版本 3.0 的 TL;DR(总结)是:

  • 如果您需要支持最广泛的浏览器,包括 IE8、Opera 12、Safari 5 等,请使用 jQuery-Compat 3.0.0 包。我们建议大多数网站使用此版本,因为它为所有网站访问者提供最佳的兼容性。
  • 如果您的网站仅构建用于 evergreen 前沿浏览器,或者是一个基于 HTML 的应用程序,包含在 WebView(例如 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 的进一步进展,我们将向大家更新有关代码更改、支持的浏览器等详细信息。敬请期待!

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 月安全回顾

发布于 作者:

在九月的最后两周,由于一系列针对我们 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 上与我们打个招呼,在 irc.jquery.org 上列出的众多频道之一。作为组织,我们很乐意听取您可能愿意捐赠的任何服务,您每周可以抽出几小时的开发人员或其他技术人员,或者您能提供财务支持。请发送消息至 membership@jquery.org,告诉我们您能提供哪些帮助。

我们一直不希望过多地谈论这些攻击事件,因为它们一直在发生,因为我们仍然是黑客眼中的一个有价值的目标,他们一直在试图渗透我们的服务器,甚至截至目前仍在尝试。现在与社区分享所有这些信息,我们试图平衡解释正在发生的事情的必要性与公开声明我们认为已经控制住局势可能产生的反弹。

也就是说,我们目前认为我们已经控制住了局势。为此,我们要衷心感谢整个 jQuery 基础设施团队,他们撸起袖子,不知疲倦地努力解决这些问题,使我们恢复到良好的状态。我们将继续保持警惕,以确保我们社区用户所有资源的可靠性和安全性。