jQuery 1.11.3 和 2.1.4 发布 – iOS 安全版

发布于 作者

我们又来啦。已经过了愚人节,所以你可以相信我们,我们为你带来了两个新的补丁版本:jQuery 1.11.3 和 2.1.4。

这些版本包含了一个 针对 iOS 8.2 和 8.3 中一个罕见错误的修复。这是唯一的更改。与 1.11.2 和 2.1.3 一样,我们预计升级时不会出现任何问题。但是,如果你在从以前的版本升级时遇到错误,请 告诉我们

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

https://code.jqueryjs.cn/jquery-1.11.3.js

https://code.jqueryjs.cn/jquery-2.1.4.js

这些更新已经作为 npm 和 Bower 上的当前版本提供。有关获取 jQuery 的所有方式的信息,请访问 https://jquery.org.cn/download/。请记住,公共的第三方 CDN 今天会收到其副本,并且可能需要几天时间才能发布这些文件。如果你急于开始,我们的 CDN 始终可用。

非常感谢所有参与此版本测试、报告错误或提交补丁的人员,包括 John-David Dalton、Michał Gołębiowski、Oleg Gaidarenko、Richard Gibson、Dave Methvin、Benjamin Poulain 和 Oz Solomon。

感谢大家的支持,我们期待向大家展示 jQuery 3.0 中所有准备好的内容!

 

宣布 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 Globalization 概述页面

即将到来

我们正在开发更多令人兴奋的功能,这些功能很快将成为 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 频道加入我们。