PEP 0.4.0

发表于 作者

今天,我们很高兴地宣布 PEP 的一个新版本:0.4.0 版本。值得注意的变化包括对 webpack 和 browserify 等模块打包器更好的支持,以及在 CDN 上包含一个 WIP 版本。WIP 版本可以在 https://code.jqueryjs.cn/pep/pep-git.js 找到,但仅用于测试(请勿将 WIP 版本部署到生产环境)。

有关此版本中包含内容的完整详细信息,请参阅 变更日志

要开始使用 PEP,您可以从 npmbower (pepjs)jQuery CDNGitHub 版本 获取文件。查看 示例查看项目自述文件 以获取更多详细信息。如果您在使用 PEP 时遇到任何问题,请 提交问题 或加入我们,在 freenode 的 #pep 上进行 IRC 聊天。

感谢所有帮助发布此版本的人,尤其是:Anders D. Johnson、Colin Snover、John-David Dalton、Jörn Zaefferer、Mike Mariano、Scott González、Stefan Neubert、Stuart P. Bentley、Will Binns-Smith。

宣布 PEP 0.3.0

发表于 作者

今天,我们很高兴地宣布 PEP(jQuery 基金会的 指针事件 polyfill)自 Google 将指针事件 polyfill 转移到 jQuery 基金会 后的第一个版本。为了解决指针事件规范的更改并完善我们的测试套件,还有很多工作要做,但您今天就可以开始在您的项目中使用指针事件!其他项目,如 jQuery UI、jQuery Mobile 和 Dojo,正在使用 PEP 切换到指针事件。

为了庆祝我们的第一个版本,Alex Schmitz 建立了一个小型的 演示,他用它来展示 PEP 在不同设备上的工作情况。

P drawn on desktop ChromeE drawn in Chrome on AndroidP drawn in Mobile Safari

自从转移以来,我们一直在专注于迁移到新的基础设施,以方便贡献和加速开发。我们将测试切换到使用 Intern,并使用 Travis CI 设置了持续集成,使用 BrowserStack 在我们所有支持的浏览器中运行测试。我们还放弃了简单的文件串联,转而使用 Esperanto 通过 ES6 模块使跨文件依赖关系明确。最后,我们迁移到 公共版本发布基础设施,以确保一致的版本发布。

要开始使用 PEP,您可以从 npmbower (pepjs)jQuery CDNGitHub 版本 获取文件。查看 示例查看项目自述文件 以获取更多详细信息。如果您在使用 PEP 时遇到任何问题,请 提交问题 或加入我们,在 freenode 的 #pep 上进行 IRC 聊天。

进入重点

发表于 作者

我们很高兴地宣布,指针事件规范 已成为 W3C 建议!正如 我们之前所说,我们喜欢指针事件,因为它们支持当今所有常见的输入设备 - 鼠标、笔/手写笔和手指 - 但它们的设计方式也使得未来的设备可以轻松添加,而现有的代码将自动支持新设备。尽管达到建议状态是一个重大的时刻,但仍有很多工作要做。

只有在所有开发人员正在支持的浏览器中都能使用时,指针事件才是一个可行的解决方案。虽然这一天似乎还很遥远,但 jQuery 基金会致力于尽快将可用的指针事件提供给每位开发人员。我们正在开发 PEP,我们的指针事件 polyfill,Google 从 Polymer 项目转移到 jQuery 基金会。PEP 将被集成到 jQuery UI、jQuery Mobile 和 Dojo 等项目中。我们希望在未来几周内发布我们的第一个版本。如果您有兴趣帮助我们,请 告诉我们

Microsoft 已经在 IE11 中发布了指针事件的完整实现,他们在 IE10 中有一个几乎完整的、带前缀的实现。Mozilla 也为 Windows Metro 上的 Firefox 提供了完整的实现,尽管它目前没有启用。这两个实现都 通过了 W3C 指针事件测试套件的 100% 测试。您可以在 https://wiki.mozilla.org/Gecko/Touch 上关注 Mozilla 为其所有支持的平台所做的进度。

当然,世界并非总是阳光明媚。目前还没有迹象表明 Apple jemals指针事件。因此,Google 决定不在 Blink 中发布指针事件,而是尝试 扩展触控事件以具有指针事件的功能。扩展触控事件的工作正在 触控事件社区小组 中进行,以确保互操作性和标准化。然而,有合理的担忧,认为向触控事件添加几个扩展只会导致更加分散的格局,最终会使情况变得更糟而不是更好。目前还不清楚 Apple 是否会实现所有这些功能,而添加对悬停的支持将需要由于触控事件中已存在的逻辑而导致笨拙的 API。即使指针事件的功能被添加到触控事件中,笨拙的事件接口也远不如鼠标事件那么好或容易从鼠标事件过渡。

尽管 Google 目前的立场,但他们愿意不断重新评估发布指针事件是否将有助于推动网络发展。我们希望 Google 将来会改变其决定,而 Apple 最终将被迫在 Safari 成为唯一不支持指针事件的主要浏览器后实现指针事件。实现指针事件的 Chromium 问题 已经是所有问题(打开和关闭)中基于星级数量排名第 99 个百分位的。

作为一个社区,我们可以现在就塑造网络的未来。我们不能再让 Apple 扼杀浏览器供应商和标准机构的工作。太多次,我们看到拥有良好意愿的浏览器供应商成为 Apple 不愿与标准机构合作以及 WebKit 在移动设备上的主导地位的牺牲品。我们不能再让这种情况发生。jQuery 基金会致力于推动诸如指针事件之类的标准,以改善开发人员体验,进而使网络成为每个人都能使用、更易访问的场所。共同努力,我们可以推动网络发展,让标准和更好的 API 获胜。我们可以选择指针事件而不是触控事件。我们现在就可以做到,使用 PEP

jQuery 基金会采用鼠标滚轮插件

发表于 作者

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

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

被遗弃或被忽视的开源项目可能是 Web 开发人员的眼中钉。当开发人员的个人项目变得非常流行时,它通常会超出该开发人员维护和支持它的能力。更多开发人员应该效仿 Brandon 的做法,在他们不再有时间的情况下,寻找能够接手的人。正如 Eric Raymond 在 _The Cathedral and the Bazaar_ 中所说,“当你对一个程序失去兴趣时,你对它的最后责任是把它交给一个称职的继任者。”

从 GitHub 到 WordPress

发表于 作者

维护像 jQuery 这样庞大的开源项目需要使用各种软件和服务。我们最依赖和最喜欢的两个产品是 GitHub 和 WordPress。

我们已经使用并喜欢 GitGitHub 多年了。社区协作非常出色。我们看到了社区提供的错误修复、重构、新功能等的大幅增加。即使在团队内部,GitHub 提供的服务也带来了巨大的生产力提升。分支和拉取请求为共享代码和同行代码审查提供了一种很好的机制。该界面几乎以我们想要的方式呈现每个文件,尤其是 Markdown。API 和服务挂钩为自动化各种任务提供了一种很好的方式。

我们使用 WordPress 来管理我们的各种网站,时间甚至比我们使用 GitHub 还长。我们拥有数量惊人的网站。从项目网站、API 文档、教程、贡献指南、活动到组织网站,我们维护的网站数量与我们维护的代码项目数量不相上下。WordPress 提供了工具,使管理如此多的具有共同品牌形象的网站几乎与维护只有一个具有共享用户、主题继承和出色插件架构的网站一样简单,提供了比 GitHub 更多的挂钩。

缺失的部分

不幸的是,我们的 WordPress 体验缺乏我们钟爱的所有协作工具和工作流程。只有少数人有权编辑内容,并且在没有拉取请求的情况下进行协作是痛苦的。由于我们的 XML 工作流程,管理 api.jquery.com 上的内容更加麻烦,而 WordPress 编辑器显然并非为此而设计。

虽然 GitHub 有很多我们喜欢的工具,他们甚至还有 GitHub Pages,但它缺乏我们管理网站内容所需的架构。GitHub Pages 没有内置功能,也不能进行任何服务器端处理。诸如搜索和评论之类的功能要么需要通过客户端 JavaScript 逐个网站添加,要么根本无法实现。

将所有内容整合在一起

为了解决这些问题,我们决定找到一种方法将这两种产品整合在一起,并兼收并蓄。起初进展得很艰难,但我们最终成功了!当我们得到 WordPress 首席开发者 Andrew Nacin 的支持时,事情开始真正好转。Nacin 在建立我们的新基础设施和确保我们尽可能高效地使用 WordPress 中发挥了关键作用。在他的帮助下,以及一些新项目的帮助 - 比如 node-wordpressgrunt-wordpressgrunt-jquery-content - 我们得以构建出我们想要的东西。

我们现在在 jquery-wp-content 中管理我们的 WordPress 主题,并且所有网站的内容都存储在 GitHub 上的独立仓库 中并进行管理。将每个网站的内容存储在 GitHub 上,让我们能够享受在问题中跟踪任务、在拉取请求中讨论、对更改进行视觉比较等所有好处。每个页面的内容由 grunt-jquery-content 从 HTML、XML 或 Markdown 源代码(取决于仓库)生成。然后使用 grunt-wordpress 将此内容同步到 WordPress。就像我们的代码一样,我们所有网站的内容都是开源的,并且根据 MIT 许可条款发布,但我们的品牌除外,它未被授权他人使用。

我们现在使用这个新流程为 15 个网站提供支持,平均每个网站有 20 名贡献者。我们最受欢迎的社区贡献网站是 learn.jquery.com,该网站即将突破三位数,以及 api.jquery.com,该网站目前拥有 50 名贡献者。我们平均每个网站有 40 个拉取请求,这表明这个新工作流程对团队和社区来说是多么有益。如果你想加入这个社区工作,可以在我们的贡献网站上 阅读有关我们流程和如何参与的更多信息,帮助让 jQuery 对每个人都更好。

对专利持谨慎态度

发表于 作者

随着越来越多的公司进军移动领域,触摸事件已成为 Web 开发人员关注的热门话题。我们大多数人知道触摸事件支持单点和多点触摸跟踪。我们中有些人知道同时使用触摸和鼠标的棘手之处。更少的人知道有多种触摸事件模型,而尝试同时支持多种模型的人就更少了。我想谈谈我们今天所处的位置,我们是如何走到今天这一步的,以及我们将来可能面临的潜在问题。

简史

早在 2007 年,苹果公司推出了 iPhone,随之而来的是触摸事件。Neil Roberts 在 SitePen 文章 中很好地总结了苹果公司的实现方式:“尽管起初 API 看起来有点粗糙,但一旦你学会了它们,你就可以在应用程序中做出惊人的事情。”事实证明,我们已经看到了很多惊人的事情,而且没有太多关于“粗糙”API 的抱怨。该模型后来被 Android、诺基亚、RIM、Opera 等公司实现。苹果公司的实现方式目前只在其 WebKit 的私有分支中可用;直到 2009 年底,触摸事件才首次出现在主 WebKit 仓库中,来自 Android 的实现方式。

同样是在 2009 年,W3C 开始讨论 DOM Level 3 事件的统一指针模型。其理念是将触摸(包括多点触摸)、笔/触控笔和鼠标事件合并到一个模型中,从而轻松支持所有指针类型。然而,这被放弃了,因为当时的目的是让规范尽可能小,以便更快地成为推荐标准。

两年后(2011 年 3 月),Mozilla 发布了 Firefox 4,其中包含 他们自己的触摸事件风格。Mozilla 模型更接近鼠标事件模型和被废弃的 W3C 模型,因为事件对象是扁平的;event.pageX 等属性存在,并且没有触摸列表。如果你想跟踪多个触摸,可以通过事件的 streamId 来实现。Mozilla 后来弃用了这种实现方式,转而采用基于苹果公司模型的新的 W3C 规范。

2011 年 1 月,W3C 开始起草 基于 WebKit 实现的触摸事件规范。几个月后,它成为了 工作草案,并在 12 月成为 候选推荐标准。次月,成立了一个 专利咨询小组 (PAG),以调查 苹果公司披露的专利。苹果公司没有参加触摸事件工作组 (WG),以及其专利披露,导致 W3C 停止了对规范的工作,并且他们计划在 PAG 结束之前,或者在 PAG 向 WG 提出建议之前,不会继续进行。截至本文撰写之时,PAG 尚未就这些专利的影響做出决定,但该小组的目标是迅速得出结论。

与此同时,微软对触摸采用了不同的方法,并在 IE10 中使用 指针事件 (带有 MSPointerEvent 对象) 来实现他们自己的方案。MSPointerEvent 对象类似于最初的 Mozilla 实现方式,因为事件对象是扁平的,并且包含 pointerId 属性。但是,MSPointer 与所有其他触摸特定模型之间存在一些重要区别。

注意:以上只是 Web 上触摸事件的简史;如果你有兴趣了解触摸界面的历史,你可能想看看 Bill Buxton 的 我所认识和喜爱的多点触摸系统

指针事件与触摸事件

如上所述,通用指针事件(如最初的 W3C 想法或 MSPointer)具有支持多种指针设备的优势。事实上,在运行 Windows 8 的三星平板电脑上,鼠标、笔和手指都被规范化为 MSPointer;你甚至可以使用 pointerType 属性来确定正在使用的指针类型。除了支持所有当前的指针设备之外,MSPointer 的设计方式使将来可以轻松添加新设备,并且现有代码将自动支持新设备。更棒的是,MSPointer 事件对象与其他事件具有相同的结构,与触摸事件、触摸列表和触摸事件的集合相比,学习曲线更短。

MSPointer 和 Touch 之间的另一个重大区别是 MSPointer 支持悬停(悬停和移出事件)。虽然大多数触摸设备都有硬件限制,不允许悬停,但索尼最近宣布了 Xperia sola,它配备了“神奇的悬浮触摸技术”。这提出了一个重要问题:触摸事件是根据特定设备为特定类型的输入设计的。指针事件代表了 Web 上对输入的完全不同的方法。虽然我们已经介绍了这对开发人员的影响,但考虑这对硬件制造商的影响也很有趣。为了让苹果公司在触摸界面上取得成功,他们必须创建新的事件模型。针对新形状和新输入方法的创新要么会被现有标准扼杀,要么将需要一套新的 API,效仿苹果公司在 iPhone 和触摸事件上的做法。指针事件为开发人员和硬件制造商都提供了一个干净的解决方案。可以想象,几年后,开发人员可以使用指针事件作为指针的唯一事件模型,将鼠标事件抛之脑后。

支离破碎的未来

尽管 W3C 仍然计划继续推进触摸事件规范(取决于 PAG 的建议),但未来尚不明朗。即使 PAG 确定苹果公司的专利不适用,并且规范成为 W3C 推荐标准,也不清楚微软是否会在 Windows 中实现这种模型,因为需要一个多输入事件系统。如果 W3C 要改变方向,开始指针事件规范,也不清楚苹果公司,或者更广泛地说 WebKit,是否会实现新的事件模型。完全有可能,即使有 W3C 推荐标准,我们也将在几年内无法在浏览器和设备之间实现一致的事件模型。

无论 W3C 选择追求哪种模型,jQuery 都致力于填补空白,就像我们对其他事件(如提交和更改)所做的那样。我们认为指针事件模型更易于使用,并且更具前瞻性,我们希望它能够标准化,即使触摸事件也标准化了。但是,我们只对规范化为 W3C 推荐标准感兴趣,并且如果没有官方的 W3C 规范,我们不会提供自定义指针事件。我们正在与 W3C 和微软合作,努力找到对我们的用户和开放式 Web 最好的前进方向。

行动号召:微软提交指针事件提案

我们希望公开呼吁微软向 W3C 提交指针事件提案。触摸事件工作组,以及更广泛意义上的各种浏览器供应商,都表示对指针事件感兴趣。最有效的方法是让微软正式向 W3C 提交提案。

行动号召:社区尝试两种事件模型

我们还鼓励社区尝试 Touch 和 MSPointer。玩转 API,构建应用程序并提供反馈。如果你有兴趣,但没有必要的硬件,请考虑与一两个本地开发人员配对。虽然有很多开发人员在 Touch 之上构建,但只有很少的人在 MSPointer 之上构建,而公开比较它们的人就更少了。我们鼓励你将你的反馈直接发送到 W3C public-webevents 邮件列表,但请随时在此处留下反馈,我们将转达给你。

行动号召:提交现有技术

如果您知道任何关于多点触控/触控列表的现有技术,即使是在 Web 以外,也请联系 W3C。这包括编程模型和 API,特别是使用事件的那些。这将有助于专利咨询小组更快地得出结论。再说一遍,如果您想在这里留下评论,我们会将它们传递给相关人员。