ESLint 加入 jQuery Foundation

发布于 作者

在上周宣布 JSCS 将与 ESLint 合并之后,本周 ESLint 团队宣布他们将他们的项目带到 jQuery Foundation。我们非常高兴能够为 ESLint 提供一个长期、公开管理的家园。我们也很期待看到这次与 JSCS 新合作的成果。

在 Foundation,我们不断努力寻找改善 JavaScript 开发者开发体验的方法。我们相信 ESLint 和 JSCS 在这方面都处于领先地位。随着这两个杰出的团队在 jQuery Foundation 聚在一起,我们预计并支持 ESLint 的加速开发,以及为希望将 JavaScript 分析、linting 和代码风格检查引入其项目的开发者提供更轻松的发现和决策过程。

展望未来,我们希望继续支持 JavaScript 领域的创新,同时为 JavaScript 开发世界的各个方面提供合适的协作环境。有关 ESLint 选择 jQuery Foundation 以及这对相关团队和用户的影响的更多信息,请查看他们在 ESLint 博客上的公告。

践行我们对多元化的承诺

发布于 作者

为了践行我们夏天宣布的对多元化、教育和可访问性的重新关注,jQuery 基金会在过去几个月中举办了一次活动,并赞助了另一次活动,旨在通过外展和教育来提高科技领域的多元化。

jQuery 开发者峰会

10月16日至18日,jQuery 基金会与合作伙伴 科技领域有色人种女性聊天曼哈顿 JSGirl Develop it皇后区联盟 共同在纽约市举办了 jQuery 基金会开发者峰会,共有 50 名开发者参加。  

这次免费的三天活动由 Digital Ocean 慷慨赞助,旨在使开源开发更容易被技术领域中代表性不足的群体所接受和参与。参与者无论技能水平和领域如何,都从当前的开源贡献者和项目代表那里学习最佳实践和基本技能,并为他们感兴趣的开源项目做出贡献。

本次活动创造了几个首次

  • 三年来的首次 jQuery 开发者峰会
  • jQuery 基金会在纽约市举办的首次活动
  • 我们首次能够举办对参与者免费的活动
  • 我们首次与合作伙伴合作,专注于提高开源社区中多元化群体的代表性
  • 在最近合并这两个组织后,jQuery 基金会和 Dojo 基金会的项目负责人首次齐聚一堂的活动

在创建本次活动时,jQuery 基金会力求消除尽可能多的参加技术活动和参与开源的障碍。为了实现我们的目标,我们将活动安排在周末以避免工作冲突,向所有参与者免费以消除收入障碍,保持规模较小以确保较低的导师与参与者比例,与当地代表性不足群体的组织合作,并遵循 jQuery 基金会行为准则。我们的努力得到了回报,使本次活动成为一个安全和友好的环境。

议程

周五晚上我们进行了一次愉快的见面会,并提供了食物和饮料。导师帮助大家设置好笔记本电脑,安装好周六早上开始工作所需的所有软件。

周六从经验丰富的开发者和在许多情况下 jQuery 基金会和其他开源项目领导者的一系列介绍性演讲开始。目的是让新的参与者了解参与开源项目的理由、方式和内容。

为什么要贡献?

jQuery 基金会的内容负责人 Anne-Gaelle Colom 和威斯敏斯特大学的教学助理分享了她 1996 年首次参与移动编程的经历,以及她最终参与 jQuery 项目如何帮助她在以男性为主导的职业和大学部门中获得认可和地位。可以在 这里 找到她的演示文稿。

在周六和周日早上进行的额外演示涵盖了开始为开源贡献所需的所有基础知识。演讲者和内容都非常出色。在可能的情况下,幻灯片链接包含在下面。

  • Adam Sontag – 介绍“修复一个简单的错误叙述”
  • Dave Methvin – 报告和分类错误
  • Ashley Williams – 拉取请求、代码审查、自动化检查 (CLA、CI 等) | 开源许可和 CLA
  • Brian Brennan – 命令行 + Git + 拉取请求
  • Adam Ulvi – 如何让这一切生效 -> 虚拟机 / Vagrant
  • Nick Hehr – 贡献代码
  • Leo Balter – 单元测试
  • Sarah Frisk – 项目沟通、开源原则应用于工作场所/你的职业
  • Rushaine McBean – 社区/激励/抱负 – “软”方式参与 (聚会、会议、演讲等)
  • István Szmozsánszky Flaki – 浏览器开发者工具研讨会

技能

在周六的演讲结束时,所有导师都快速概述了他们的项目,参与者与他们最感兴趣的项目配对。

导师引导参与者使用 virtualbox、node、npm、git 和编辑器设置他们的环境。

学科

参与者组成由不同学科成员组成的团队,确保每个人都能根据自己的优势和兴趣做出有意义的贡献。这些包括

  • 编程
  • 文档
  • 服务器/网络管理
  • 设计
  • 社区发展

项目

参与者与项目团队成员一起工作,在所有这些学科中为流行的开源项目做出贡献,其中一些包括

结果

几位参与者回复了我们的活动后调查。以下是一些反馈

本次峰会让我受益匪浅。我非常重视导师与学员的比例。能够与这么多专家进行一对一交流,无论你在哪个阶段,都非常棒。我喜欢它的随意灵活性。

我认为你做得非常出色,让各种各样的人参加。
我很高兴你们包括了 LGBTQ 社区。在我的 21 年职业生涯中,我从未在任何其他活动或会议上看到过如此多的多样性。

最有价值的方面是为开源贡献。本次峰会让我意识到开源不仅仅是代码。

我们还询问了导师的看法

演讲者/导师与参与者的近乎 1:1 的比例使本次活动如此亲密,让我有机会真正了解人们,了解他们的兴趣以及开源如何使他们的生活受益,以及他们的生活如何使开源受益。

参与者的热情和参与意愿令人惊叹!显然,许多人只是因为无法克服入门障碍而没有参与开源,而这是我们可以帮助的地方!

Mozilla View Source

11 月 2 日至 4 日,jQuery 基金会赞助了在俄勒冈州波特兰市 Mozilla 的 View Source 活动的科技领域多元化角。

View Source 的目标是提供对当前和即将推出的技术的深入、实用的了解,并提供充足的对话机会。

波特兰 Women Who Code 网络的负责人 Caterina Paun 迎接了多元化科技角区的参与者,并领导了关于女性工程人员、作为女性加入全男性团队以及公司如何支持女性职业发展的讨论。

虽然在使网络构建者的集合像网络的消费者一样多样化方面还有很多工作要做,但从 Twitter 对话来看,本次活动至少为包容性提供了一个灯塔。

#ViewSource 中反复出现的重要主题是通过技术关注用户/人性,而不是痴迷于闪亮的新技术。
— Lucas Myers (@unthunk) 2015年11月4日

偶尔我会迷失方向,不知道我作为一名网络开发人员该做什么以及我想要什么。像 @viewsourceconf 这样的会议帮助我重新集中注意力。
— Alicia Sedlock (@aliciability) 2015年11月4日

完成第一天后,我必须说,最引人注目的是有多少聪明的女性走上舞台。@viewsourceconf
— Elaine Oliver (@evoliver) 2015年11月3日

jQuery 基金会的下一步

我们还有很长的路要走,还有很多工作要做,但当我们继续执行增加开源多元化的目标时,请留意我们未来活动赞助、演讲和开发者峰会的公告,进入 2016 年!

Grunt,重启

发布于 作者

Grunt logo
Grunt 是网络开发者工具箱中最知名和最受欢迎的任务运行器之一。现在这个项目已经加入 jQuery 基金会,我们正致力于让项目重新启动。Grunt 的创建者 Ben Alman 正在寻找可以接管项目的人。团队需要帮助处理大量问题和拉取请求,然后发布新版本。

这是一个参与开源的绝佳机会。如果您在项目中使用了 Grunt,这也是回馈和帮助网络开发社区的机会。

感兴趣? 请在此 Grunt issue 中发帖。

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 发布 获取文件。 查看 示例查看项目 README 以获取更多详细信息。 如果您在使用 PEP 时遇到任何问题,请 提交 issue 或加入我们在 freenode 上的 #pep

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

宣布 Globalize 1.0

发布于 作者

jQuery 基金会很高兴地宣布 Globalize 项目的 1.0 版本发布,这是我们的国际化 (i18n) 库。这个版本已经期待了很长时间,随着 Globalize 越来越受欢迎,并且每天都在获得越来越多的采用,我们很自豪地终于宣布这个项目的第一个稳定版本。我们可以继续谈论这个最新版本的特性和优点,但我们认为听取来自源头的消息很重要。以下是 Globalize 项目负责人 Rafael Xavier 详细介绍了你需要了解的关于 Globalize 1.0 版本以及未来即将发生的事情的所有信息。

一个始终是最新的、模块化和简单的 i18n 库

让我跳过细节,直接进入有趣的部分。以下是今天 Globalize 提供的功能,包括数字格式化和解析、日期和时间格式化和解析、货币格式化、消息格式化(ICU 消息格式模式,支持性别和复数形式)。

日期格式化和解析

日期模块提供将日期和时间从其内部表示形式转换为文本形式(格式化)以及反之(解析)的方法,且不依赖于语言。你的代码可以方便地控制格式化日期的长度、时间、日期时间。

locale .dateFormatter({ datetime: "medium" })( new Date() );
en "Feb 20, 2015, 12:15:00 PM"
zh "2015年2月20日 下午12:15:00"
zh-u-nu-native "二〇一五年二月二〇日 下午一二:一五:〇〇"
es "20 de feb. de 2015 12:15:00"
ar "٢٠‏/٠٢‏/٢٠١٥ ١٢،١٥،٠٠ م"

你的代码甚至可以单独选择字段,完全独立于区域设置约定。模式“GyMMMd”选择以缩写形式表示的纪元、年、月份的缩写形式和日。

locale .dateFormatter({ skeleton "GyMMMd" })( new Date() );
en "Feb 20, 2015 AD"
zh "公元2015年2月20日"
es "20 feb. de 2015 d. C."
ar "٢٠ فبراير، ٢٠١٥ م"

 

相对时间格式化

除了格式化日期和时间外,相对时间模块还提供日期和时间字段的国际化消息,使用习惯用词或短语(如果可用)。

locale, value .relativeTimeFormatter( "day" )( value );
en, -15 "15 days ago"
en, 0 "today"
en, 1 "tomorrow"

 

数字格式化和解析

数字模块提供格式化和解析数字的方法。你的代码可以完全独立于区域设置约定,例如小数点、千位分隔符,甚至使用的十进制数字,或者数字格式是否为十进制。但是,它仍然可以方便地控制格式化数字的各个方面,例如最小和最大小数位数、整数填充、舍入方法、显示为百分比等。

locale .numberFormatter()( Math.PI );
en (英语) "3.142"
es (西班牙语) "3,142"
ar (阿拉伯语) "٣٫١٤٢"

格式化千位分隔符

locale .numberFormatter()( 1000000 );
en-US (美国英语) "1,000,000"
en-IN (印度英语) "10,00,000"

格式化百分比

locale .numberFormatter({ style: "percent" })( 0.15 );
en (英语) "15%"
es (西班牙语) "15 %"
ar (阿拉伯语) "١٥٪"

 

货币格式化

货币模块提供格式化货币的方法。你的代码可以完全独立于区域设置约定,例如使用哪个货币符号、货币符号和值之间是否有空格、货币符号必须放置在哪个侧面,或者特定货币使用的十进制数字。货币可以使用符号(默认)、会计形式、3 个字母的代码或复数消息显示。

使用符号格式化货币

3 个字母的货币代码 en (英语) de (德语) zh (中文) ar (阿拉伯语)
.currencyFormatter( "USD" )( 1 ); "$1.00" "1,00 $" "US$ 1.00" "US$ ١٫٠٠"
.currencyFormatter( "EUR" )( 1 ); "€1.00" "1,00 €" "€ 1.00" "€ ١٫٠٠"
.currencyFormatter( "CNY" )( 1 ); "CN¥1.00" "1,00 CN¥" "¥ 1.00" "ي.ص ١٫٠٠"
.currencyFormatter( "JPY" )( 1 ); "¥1" "1 ¥" "JP¥ 1" "JP¥ ١"
.currencyFormatter( "GBP" )( 1 ); "£1.00" "1,00 £" "£ 1.00" "£ ١٫٠٠"
.currencyFormatter( "BRL" )( 1 ); "R$1.00" "1,00 R$" "R$ 1.00" "R$ ١٫٠٠"

以完整名称格式化货币

locale .currencyFormatter( "USD", { style: "name" })( 1 );
en (英语) "1.00 US dollar"
de (德语) "1,00 US-Dollar"
zh (中文) "1.00美元"
ar (阿拉伯语) "١٫٠٠ دولار أمريكي"

以会计形式格式化货币,例如,在英语区域设置中使用括号代替负数的减号

locale .currencyFormatter( "USD", { style: "accounting" })( -1 );
en (英语) "($1.00)"

 

ICU 消息格式支持(支持性别和复数形式)

消息模块提供允许创建国际化消息的方法,并带有可选参数(变量/占位符),允许进行简单的替换、性别和复数变形。参数可以按任何顺序出现,这对于翻译成具有不同语法的语言是必要的。

Globalize.loadMessages({
  en: {
   likeIncludingMe: [
      "{count, plural,",
      "    one {You have one task remaining}",
      "  other {You have {count} tasks remaining}",
      "}"
    ]
  }
});

 

locale, count .messageFormatter( "likeIncludingMe" )({ count: count });
en, 1 "You have one task remaining"
en, 99 "You have 99 tasks remaining"

 

基于标准

Globalize 基于 Unicode 联盟标准和规范(UTS#35),并使用其 通用区域设置数据存储库 (CLDR),这是可用最大和最全面的标准区域设置数据存储库。CLDR 会不断更新,并被许多大型应用程序和操作系统使用,因此你始终可以访问最准确和最新的区域设置数据。

CLDR 内容

Globalize 需要 CLDR 内容才能正常工作,但它不会嵌入或托管此类内容。相反,Globalize 赋予开发人员以他们想要的方式加载 CLDR 数据。预计将提供官方 JSON 格式的 Vanilla CLDR(无需预处理)。因此,(a) Globalize 避免了由过时的 i18n 内容引起的错误。开发人员可以直接从 Unicode 获取最新的 CLDR 数据,而无需等待我们这边进行任何管道处理。(b) 开发人员可以完全控制他们希望在其应用程序上提供的区域设置覆盖范围。(c) 开发人员能够在其应用程序之间共享相同的 i18n 数据集。无需复制数据。有关更多信息,请阅读我们的文档 CLDR Usage

浏览器和 Node.js 支持

Globalize 会系统地针对桌面和移动浏览器以及 Node.js 进行测试。因此,使用它你将在各种浏览器和客户端与服务器之间获得一致的结果。有关更多详细信息,请阅读我们的 Browser Support 部分。

开始使用

安装它并立即使用它。在我们的 Usage 部分中查看 AMD + bower、Node.js + npm 或纯 JavaScript 的示例。

如果你来自 Globalize 0.x,请不要惊慌。我们为你创建了一个 迁移指南

团队和社区

我们感谢我们所获得的所有支持,特别是 Jörn Zaefferer 和 Scott González,感谢他们帮助进行初始重写概念并始终提供建议;John Emmons、Steven R. Loomis 和 Mark Davis (Unicode),感谢他们帮助解决 CLDR 和 UTS#35 规范问题;Alex Sexton 和 Eemeli Aro,感谢他们分别使用 messageformat.js 和 make-plural.js 库为我们的 MessageFormat 和 Plural 模块提供支持;以及 jQuery 基金会,感谢其社区建设、协作努力以及对 Globalize 和 Web 国际化的持续支持。

我们还要感谢 Nebojša Ćirić, Mihai Niță, 和 Shanjian Li (Google); Steven Loomis, Steven Atkin, 和 John Emmons (IBM); Rick Waldron (Ecma-402 第二版编辑); Caridy Patiño 和 Eric Ferraiuolo (Yahoo); Christophe Jolif 和 Clement Mathieu (Dojo); Cameron Dutro 和 Kirill Lashuk (Twitter); Craig Cummings 和 Tex Texin (jsi18n.com); Santhosh Thottingal 和 Kartik Mistry (Wikipedia); Axel Hecht (Mozilla); Bruno Lewin 和 Daniel Goldschmidt (Microsoft); Lily Wen (Adobe); Edwin Hoogerbeets (LG); Eirik Rude (Oracle); Xiang Xu (Paypal); Iskren Chernev (moment.js); 和 Tingan Ho (l10ns.org) 加入我们,共同努力更好地协调 JavaScript 社区的全球化(国际化和本地化)活动。 如果您想参与或了解更多信息,请访问 javascript-globalization@googlegroups.com 邮件列表或查看我们的 JavaScript 全球化 概述页面

即将到来

我们正在开发更多令人兴奋的功能,这些功能很快将成为 Globalize 的一部分。例如:运行时优化非格里高利历日历支持。因此,如果这些内容对您有兴趣,请务必发表您的意见。表达您的想法和需求(例如,您希望支持哪些日历)。
我们一直在寻找贡献者加入我们的团队。如果您想参与,请阅读 贡献指南。您的帮助将不胜感激。

宣布 PEP 0.3.0

发布于 作者

今天,我们很高兴地宣布 PEP(jQuery Foundation 的 Pointer Events 多填充)自 Google 将 Pointer Events 多填充转移给 jQuery Foundation 以来首次发布。为了解决 Pointer Events 规范的变更并完善我们的测试套件,还有很多工作要做,但您今天就可以在您的项目中开始使用 Pointer Events 了!其他项目,如 jQuery UI、jQuery Mobile 和 Dojo,正在逐步切换到使用 PEP 的 Pointer Events。

为了庆祝我们的首次发布,Alex Schmitz 构建了一个小 演示,他用它来展示 PEP 在不同设备上的运行情况。

自转移以来,我们一直专注于迁移到新的基础设施,以便更容易地进行贡献和更快的开发。我们已经将测试切换为使用 Intern,并使用 Travis CI 设置了持续集成,使用 BrowserStack 在我们所有支持的浏览器中运行测试。我们还放弃了纯文件连接,转而使用 Esperanto 通过 ES6 模块来实现跨文件依赖关系的显式声明。最后,我们迁移到我们的 通用发布基础设施,以确保一致的发布。

要开始使用 PEP,您可以从 npmbower (pepjs)jQuery CDNGitHub 发布 获取文件。查看 示例查看项目 README 以获取更多详细信息。如果您在使用 PEP 时遇到任何问题,请 提交问题 或在 freenode 的 #pep 频道加入我们。

Esprima 2.1 发布

发布于 作者

我们刚刚发布了 Esprima 2.1.0!此版本引入了对几个新的 ES6 语法的支持:类、剩余参数、计算属性名、let 和 const。有关完整详细信息,请参阅下面的发行说明。我们还对我们的测试基础设施进行了各种改进,以使代码库更易于贡献者使用。非常感谢所有为本次发布贡献补丁的人:Ariya Hidayat、Bei Zhang、Brandon Mills、Mike Rennie、Mike Sherov。

在致力于将更多 ES6 功能引入 Esprima 时,我们开始与其他 JavaScript 解析器和解析器使用者合作,以帮助定义 JS AST 生成的社区标准。这项努力的结果是 ESTree 规范,位于此处:https://github.com/estree/estree。我们想感谢所有做出贡献的人,其中包括 Esprima、Mozilla SpiderMonkey 解析器、Acorn 解析器和 Babel 的成员,仅举几例。完整的贡献者列表位于此处:https://github.com/estree/estree/blob/master/README.md

预计将在几周后发布 2.2 版本,带来更多 ES6 支持。如果您想帮助贡献,我们会在 Freenode IRC 的 #esprima 房间里闲逛,并且每周三下午 2 点(美国东部时间)在 Freenode IRC 的 #esprima-meeting 房间里举行每周会议。我们期待在那里见到您!

发行说明

  • 支持 ES6 类 #1001
  • 支持 ES6 剩余参数 #1011
  • 支持 ES6 计算属性名 #1037
  • 支持 ES6 词法声明 #1065
  • 扩展属性 getter、setter 和方法的定位 #1029
  • 启用 TryStatement 过渡到单个处理程序 #1031
  • 容忍未关闭的块注释 #1041

QUnit 1.16 发布和路线图

发布于 作者

我们刚刚发布了 QUnit 1.16,这是该项目的一个重要里程碑。此版本引入了几个新的 API,这些 API 将在 QUnit 2.0 中成为默认设置。为了帮助迁移到这些 API,您今天就可以在 1.16 中开始使用它们。我们的 2.x 升级指南提供了您需要更改现有测试套件以使用新 API 的所有详细信息。

以下是新 API 的快速概述

QUnit.test( "assert.async() test", function( assert ) {
  var done = assert.async();
  var input = $( "#test-input" ).focus();
  setTimeout(function() {
    assert.equal( document.activeElement, input[0], "Input was focused" );
    done();
  });
});

您仍然通过调用 QUnit.test 并传递名称和回调来定义测试。回调接收一个包含所有断言方法的 assert 参数。新的 assert.async() 方法是全新的,取代了旧的 stop() 方法。返回的回调,这里命名为 done,稍后在测试完成后被调用,取代了旧的 start() 方法。

此外,QUnit 1.16 包含几个改进和新功能

  • Promise 支持:作为异步控制的增强,测试块现在可以感知 Promise,这意味着 QUnit 将等待测试使用 pass 或 fail 语句解决。
  • QUnit 异步测试也可以使用新的 var done = assert.async() 方法来定义,而不是旧的 stop()/start(),使其特定于测试块。
  • QUnit.skip:此方法可用于定义未执行的测试,作为占位符或临时禁用现有测试(而不是注释掉它)。跳过的测试仍然显示在 HTML 报告中,并突出显示为“跳过”。
  • testId URL 参数:单击单个测试的“重跑”链接时,现在使用测试名称的哈希值来引用测试,称为 testId,而不是以前的 testNumber。使用哈希值确保测试的顺序可以更改,并且 QUnit 仍然会重跑您之前选择的相同测试。
  • CommonJS 导出:QUnit 现在还查找 exports 对象并使用它来导出自身,使 QUnit 可以在 Rhino 上使用 -require 选项。
  • 还有一些小的更改。有关完整列表,请查看 changelog

路线图

对于未来的发布,我们还计划进行一些改进

标准化的报告器接口

目前,将任何单元测试库集成到其他工具(如 PhantomJS 或 browserstack-runner 或 Karma)中都需要自定义集成代码,即库和工具的组合。我们已经开始努力创建一个所有测试库都可以实现的标准化报告器接口,称为 js-reporters,供这些工具使用。在各个项目之间协调并让他们同意并实施一个共同的 API 需要时间,但将为每个人提供更好的测试基础设施。

更好的差异输出

在编写比较具有深度结构或许多属性的对象(如 Ember 模型或 Moment 实例)的单元测试时,当前的差异输出速度慢且效率低下。还有一些比较,差异很难阅读。替换差异库并实施自定义优化,例如仅显示大对象中叶节点的差异,将使 QUnit 的 HTML 报告更加方便开发人员使用。我们有一个 所有与差异相关的 issue 的列表

更好的支持编写自定义断言

自定义断言是测试套件中强大的抽象方法。它们目前使用不足。我们想 研究更好的 API 来编写自定义断言,以及现有和新 API 的更好的文档。

支持嵌套模块

嵌套模块,就像 Jasmine 和 Mocha 支持的那样,提供了在测试套件中进行结构化的更多灵活性。有 现有的讨论和原型,但尚未达成 API 共识。

对于任何破坏性变更,我们将采用我们目前正在使用的相同迁移模型。所有向后兼容的变更将包含在下一个小版本发布中,任何不兼容的变更将通过一个迁移层在一个小版本发布中引入,并在下一个大版本发布中移除该迁移层。

QUnit 团队

QUnit 团队也想借此机会介绍一下自己

在 2014 年 9 月芝加哥 jQuery 大会上,从左至右:Jörn Zaefferer、Timo “Krinkle” Tijhof、James M. Greene 和 Leonardo Balter。

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 基金会与标准

发布于 作者

大多数 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 一直致力于完善 Pointer Events 标准。它为指针技术的处理带来了简单性、规律性和理智性,因此开发者不会对触摸和鼠标拥有不一致(且相互冲突!)的事件模型。在过渡期间,开发者将处理三种指针模型——鼠标、触摸和指针。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 Accessibility Initiative 来解决这些问题,特别是通过 Accessible Rich Internet Applications (ARIA)。jQuery UI 小部件正在合并 ARIA 属性,基金会成员 Deque Systems 赞助了多次关于 jQuery 可访问性问题的活动。

最后,我们协调并传递报告给 jQuery 的错误,这些错误是由于特定浏览器中的标准违规造成的。由于大多数浏览器每隔几个月更新一次,因此 jQuery 纳入大型且复杂的错误修复以解决临时问题通常没有意义。但我们致力于尽快让浏览器制造商修复它们。

以标准为驱动的 jQuery 未来

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

同样,内置的 HTML5 输入类型可以与 jQuery UI 输入小部件共存。jQuery UI 致力于提供在不牺牲可访问性的情况下提供出色功能的 UI 小部件,固有地支持 ARIA 等标准。

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