SF jQuery 聚会和 Ajax 体验

发表时间 作者

SF jQuery 聚会和 Ajax 体验西部

2007 年 Ajax 体验西部
Ajaxian 和 TechTarget 的各位朋友举办了一个很棒的会议,时间为 7 月 25 日至 27 日。演讲者阵容多样,涵盖了丰富 Web 开发领域的最新技术和最佳实践。查看完整的演讲者列表和 时间安排。演讲者包括 Mozilla 的 CTO Brendan Eich;JavaScript 的创造者。Internet Explorer 平台架构师 Chris Wilson 和 Adobe 首席软件架构师 Kevin Lynch。这次会议一定会成为一个充满活力和趣味的论坛。

比这些演讲者更令人兴奋的是,将有两名 jQuery 代表发表演讲:John ResigGlen Lipka

John 将进行 3 场演讲,其中两场关于 jQuery

此外,John 还将在周五午餐时参加一个关于 Ajax 未来的小组讨论。

Glen 将发表关于 jQuery 的演讲

还将有许多其他 jQuery 用户和团队成员参加会议(包括 Yehuda KatzMichael Geary)。

SF jQuery 聚会

7 月 26 日,我们将借此机会邀请 jQuery 社区的每个人在 Gordon Biersch San Francisco Brewery 聚会,共进饮品小吃并调试代码。我们是开源的,所以请自带信用卡(BYOCC)。

Yehuda Katz 为前 1000 25 位购买社区成员饮料的 jQueriers 准备了特殊的 jQuery SWAG。此外,我们应该还有一些额外的全新 Learning jQuery 书籍,由 Karl SwedbergJonathan Chaffer 编写。

希望您能参加。报名参加,期待与您相见!

更多信息
http://upcoming.yahoo.com/event/220122/

jQuery 1.1.3.1

发表时间 作者

这是一个针对 jQuery 1.1.3 的快速错误修复版本。在 1.1.3 版本发布后,出现了一些重要的错误,我们认为需要立即解决,并发布后续版本。可以在 错误跟踪器 上找到已解决问题的完整列表。

如果您还没有升级到 1.1.3,请直接升级到 1.1.3.1。此外,如果您在使用 1.1.3 时遇到任何问题,请尝试使用此版本。

您可以从 jQuery Google Code 页面下载此版本。

下载

与往常一样,如果您遇到任何问题,请务必通过提交错误报告到 jQuery 错误跟踪器 来告知我们。

关于客户端表单验证和框架

发表时间 作者

Interaction Design 博客上有一篇关于 客户端表单验证 的好文章。它描述了在构建自己的客户端验证框架时需要牢记的重要要点。

当然,除了构建自己的框架之外,还可以使用 现有的框架。这种方法带来了一些重要的优势,其中包括“足够多的眼球,所有错误都将变得浅显”的原则。

让我们看看验证插件在文章中列出的要点上的表现如何

1. 使用表单验证框架或表单验证库

已满足。

2. 专注于解决主要的验证问题

一旦您开始开发和实施验证,就很容易尝试解决所有类型的输入所需的潜在验证。我的建议是尝试在前端验证中捕获 75-85% 的潜在用户输入错误。试图捕获所有错误会导致以下情况:

  • 代码臃肿,您的框架会变得太大
  • 几乎不可能测试客户端验证,因为验证可能出错的组合太多
  • 业务规则将转移到前端。(稍后将详细介绍如何使用 Ajax 避免这种情况)

好吧,代码臃肿是一个问题,我尝试通过大量的重构来解决。目前的代码库有 1446 行(其中大约一半是内联文档)。几周前,Dan G. Switzer 查看了该插件,并且在几个小时内就能够提供对特定代码相关问题的出色帮助。

关于测试:验证插件的当前测试套件运行 65 个测试,包含超过 350 个断言。jQuery 的测试套件运行约 500 个断言。我似乎具有良好的代码覆盖率,因为我尽可能地为所有出现的错误添加了测试。回归错误很有可能被测试套件捕获,而且它在开发过程中也提供了很大的帮助。

针对浏览器事件和 AJAX 进行测试仍然是一项非常困难的任务,即使使用 jQuery 测试套件中的 AJAX 支持。

关于业务规则转移到前端:这更多是一个设计和架构问题。即将发布的 1.2 版本将支持使用 AJAX 避免这种情况。

3. 在提交表单之前进行表单验证

这里的信息是,在用户输入内容时进行验证,而不是等到提交事件发生后再验证。1.0 之前的版本允许您指定单个事件来检查单个元素,例如 blur 或 keyup。这在某些情况下有效,而在其他情况下则很烦人,例如用户单击一个输入并被一个烦人的错误消息所迎接。为了解决这些问题,在 1.1 中发布了一个更复杂的系统。基本上,该插件会等到用户在输入了不完整的内容的字段上失去焦点时才会进行验证。如果该字段已经被标记为无效(例如,在尝试提交无效表单后),所有元素都会在 keyup(文本输入)或 click(复选框、单选按钮)时进行验证。目前的实现还不完美,当然,欢迎反馈。

4. 使用 Ajax 表单验证进行业务数据输入

1.2 中的 AJAX 验证的简要说明

$("#myform").validate({
  rules: {
    username: {
      required: true,
      minLength: 2,
      remote: "users.php"
    }
  },
  messages: {
    username: {
      required: "Enter your username",
      minLength: "At least 2 characters are necessary",
      remote: String.format("The name {0} is already in use")
    }
  }
});

API 允许您对远程验证使用与本地验证相同的声明式风格。String.format 创建另一个函数,该函数稍后会使用用户输入的值进行调用,从而生成类似“名称 asdf 已经被使用”的错误消息。

查看 AJAX 验证预览 以获取更多详细信息。

5. 对您的 JavaScript 表单验证进行广泛的测试

这在 上面 中已有所介绍。

6. 将输入数据重写为有效格式

这确实是一个有趣的观点。基本思想是接受“20070515”作为有效日期,并将其转换为“2007-05-15”以进行验证。我还没有看到任何对这种功能的特定请求,所以如果有任何兴趣,请告诉我。同时,一个好主意可能是使用 遮罩输入插件 来帮助用户输入正确的格式。

7. 在设计过程的后期添加 JavaScript 表单验证

这确实是一个很好的建议。由于 jQuery 的非侵入性,它在这方面提供了很大的帮助。无需任何 JavaScript 即可设计您的表单,并在以后添加它,尽可能地提升用户体验(UX)。

8. 使脚本与 i18n 和 l10n 兼容

换句话说:避免硬编码字符串,而是尽可能地使其易于用当前区域设置替换它们。

验证插件允许您通过简单地覆盖默认消息来翻译所有默认消息。可以轻松地在插件文件之后包含一个文件,其中包含以下内容:

$.extend($.validator.messages, {
  required: "Eingabe nötig",
  email: "Bitte eine gültige E-Mail-Adresse eingeben",
  ...
});

这种方法效果很好。您可以在同一个文件中收集其他翻译,例如 日期选择器 的标签。

然后,包含用户区域设置的正确翻译文件仅仅是一个服务器端问题。

其他问题,例如不同的数字或日期格式,可以通过编写自定义方法或覆盖默认方法(在 $.validator.methods 中)来解决。默认情况下提供了德语日期和数字格式的方法:date(默认 JavaScript 日期格式)、dateISO(1990-01-01 或 1990/01/01)、dateDE(01.01.1990 或 2.12.2012)和 number(100,000.59)和 numberDE(100.000,59)。但是,目前这些方法都不验证任何范围,例如 0001-13-50 也是一个有效的 ISO 日期。

9. 向验证框架添加回调函数

验证插件提供的最重要的回调函数是 submitHandler。当提交有效表单时,会调用它,允许您例如通过 AJAX 提交表单。其他可用的回调函数包括 errorPlacement,它用于自定义错误消息在 DOM 中的插入位置,例如用于表格布局。

在 1.2 版本中,添加了针对无效表单的回调函数,每次用户提交无效表单时都会调用该函数。目前,可以使用 showErrors 回调函数来实现此功能,但该函数在每次验证单个元素时也会被调用。新回调函数可以用于更新提示信息,例如“表单中有 6 个问题”。可以使用现有的 errorContainer 选项来控制此类提示信息的显示和隐藏。

10. 使你的框架/库可扩展

扩展验证插件的最重要方法是 $.validator.addMethod。它允许你添加任何需要的验证方法。将自定义方法保存在自己的文件中,可以方便地更新插件本身。

AJAX 验证的第一种方法很可能会演变为 $.validator.addRemoteMethod,它提供所有必要的 AJAX 远程方法的样板代码,但允许你使用任何所需的协议。无论你使用 GET 还是 POST,向服务器发送单个值还是整个表单,以及服务器返回的是 true 或 false,还是用于显示的错误信息,无论你使用什么格式,它都无关紧要。当然,实现此方法需要更多工作,但它提供了很大的灵活性。你的反馈对于这一点至关重要,因为我不想随意猜测你可能需要什么。

希望这能让你对当前表单验证的现状及其进展有一个很好的了解,并帮助你决定是否使用它。

jQuery 1.1.3:速度提升 800% 以上,仍保持 20KB

发布于 作者

我很高兴宣布 jQuery 1.1.3 版本发布。经过几个月的测试、开发和更多测试,我们发布了一个非常稳定的版本供下载。它包含大约 80 多个已修复的 bug 和一些增强功能。主要亮点包括

  1. 速度提升,DOM 遍历速度比 1.1.2 版本快 800% 以上。
  2. 重写的事件系统,更优雅地处理键盘事件。
  3. 重写的效果系统(以及配套的 fx 测试套件),具有更快的执行速度和更好的跨平台支持。

更新 - 7 月 4 日我们刚刚完成了一个快速的 bug 修复版本,版本号为 1.1.3.1,修复了 几个未解决的问题

下载

像往常一样,如果你在这个版本中发现任何 bug,请在 jQuery Bug Tracker 上提交。

1.1.3 功能

选择器速度大幅提升

根据用户的强烈需求,我们深入研究并对 jQuery 的选择器引擎进行了重大改进。以下是对 jQuery 本身速度改进的细分。所有数据都基于 SlickSpeed 测试套件。

浏览器 jQuery 1.1.2 jQuery 1.1.3 提升%
IE 6 4890ms 661ms 740%
Firefox 2 5629ms 567ms 993%
Safari 2 3575ms 475ms 753%
Opera 9.1 3196ms 326ms 980%
平均提升 867%

此外,我们还使用 SlickSpeed 测试套件对改进后的代码库进行了一些其他流行的选择器库的测试。

浏览器 Prototype jQuery Mootools Ext Dojo
IE 6 1476ms 661ms 1238ms 672ms 738ms
Firefox 2 219ms 567ms 220ms 951ms 440ms
Safari 2 1568ms 475ms 909ms 417ms 527ms
Opera 9.1 220ms 326ms 217ms 296ms 220ms

查看 速度套件 结果时需要注意以下几点:

  • 我们的速度比 jQuery 1.1.2 快 800% 以上。
  • 在最流行的浏览器 Internet Explorer 6 中,我们是速度最快的框架。
  • 我们是唯一一个没有给出错误结果的框架。
  • 所有这些都没有给你带来任何负担 - jQuery 仍然是那个你所熟悉和喜欢的 20KB 的库。

新的选择器

Unicode 选择器:这对那些想要使用 Unicode 属性值、ID、类名或标签名的用户来说是一个巨大的改进。你现在可以直接在 jQuery 选择器中使用它们

$("div.台北")
$("div#台北")
$("foo_bar台北")
$("div[@id=台北]")

转义选择器:一个经常被请求的功能,你现在可以使用特殊字符选择元素(例如 ID 或其他选择器),例如,这将找到 ID 为“foo.bar”的 div

$("div#foo\\\\.bar")

不等式选择器:虽然此选择器不是 CSS 规范的一部分,但它经常被使用并包含在其他选择器库中,因此我们决定将其添加进来

$("div[@id!=test]")

:nth-child() 改进:此选择器允许你定位特定的子元素。从 jQuery 的开始,我们就支持 :nth-child(1) 和 :nth-child(odd) 等选择器,现在我们添加了高级的 :nth-child 选择器,例如

$("div:nth-child(2n)")
$("div:nth-child(2n+1)")
$("div:nth-child(n)")

用空格分隔的属性:在 jQuery 1.0 中被删除后,这个选择器现在根据用户的强烈需求被重新引入。它允许你定位用空格分隔的属性(如 class 或 rel 属性)中的单个项目。

$("a[@rel~=test]")

动画改进

速度:动画现在明显更快更流畅。此外,你可以运行更多的同时动画,而不会造成任何速度损失。

测试:我们现在有一个专门的动画测试套件,它使我们能够修复许多以前无法定位的动画 bug。

DOM 事件监听器

在内部,jQuery 事件系统已经被改写为使用 DOM 事件系统,而不是传统的“onclick”样式的绑定事件处理程序。这种改进使你在使用库时更不显眼(不会影响其他库周围的流程)。此外,它还帮助解决了一些与将事件监听器绑定到 iframe 相关的未解决问题。

事件规范化

在规范化键盘和鼠标事件方面取得了一些进展。你现在可以访问 event.which 属性来获取有关所按特定键或按钮的大多数详细信息。

多个 .is()

.is() 方法现在可以接受多个选择器,用逗号分隔。这使你能够针对多个选择器测试你的 jQuery 集合。

$("div").is(":visible, :first")

浏览器版本

插件作者经常要求的一个功能是确定用户使用的是哪个浏览器版本。我们现在公开了一个额外的属性,可以通过它访问此信息。

jQuery.browser.version

更多 bug 修复

有关此版本中解决的所有问题的完整列表,请查看 票证列表

jQuery 的未来

我们一直非常关心 jQuery 项目的进展方向和取得的进展。我们现在关注许多不同的方面,但首要任务仍然是推进 jQuery 核心库的发展。我们已经规划了接下来的两个版本,你可以在下面了解更多信息

jQuery 1.1.4

这将是 jQuery 1.1 分支的最后一个版本 - 另一个 bug 修复版本,包含一些小的改进。这个版本还将根据即将发布的 jQuery 1.2 版本,将一些方法标记为已弃用。

我们目前计划在 7 月底发布这个版本。

jQuery 1.2

这将是 jQuery 的下一个主要版本,包含大量的新的功能。你可以在 jQuery 1.2 路线图 中找到有关此版本的详细信息。

我们非常感谢你对这个版本的意见和反馈。它仍在规划中,所以还没有完全确定。我们目前计划在 8 月底发布 jQuery 1.2。

jQuery 图书

我们现在已经有 **4** 本关于 jQuery 的书正在编写,更重要的是,它们都是由 jQuery 团队的成员编写的(所以你确信自己正在获得好的信息)。

这些书籍及其作者如下:

  • 学习 jQuery 由 Karl Swedberg 和 Jonathan Chaffer 撰写 - 预计于 2007 年 7 月初出版(Packt Publishing)。
  • jQuery 参考指南 由 Karl Swedberg 和 Jonathan Chaffer 撰写 - 预计于 2007 年夏季出版(Packt Publishing)。
  • 快速掌握 jQuery 由 Yehuda Katz 和 Bear Bibeault 撰写(Manning Publishing)。
  • 使用 jQuery 进行设计 由 Glen Lipka 撰写(Manning Publishing)。

这真是个好消息。我已经阅读了一些预发行的章节,我认为你会非常喜欢这些书。

jQuery 演讲和会议

我想宣布在接下来的几个月里将进行一些关于 jQuery 的演讲。具体来说,将在两个 Ajax Experience 会议上进行一些关于 jQuery 的演讲。

在旧金山 Ajax Experience 上,John Resig 将会进行一个 jQuery 入门概述演讲,之后会进行一个高级 jQuery 演讲。Glen Lipka 将会进行一个关于使用 jQuery 进行设计的演讲。

在波士顿 Ajax Experience 上,John 和 Glen 将会再次进行演讲,并将与 Paul Bakaus 共同进行一个关于使用 jQuery 开发高强度应用程序和游戏的演讲。

由于 jQuery 团队的很多成员都会参加波士顿 Ajax Experience,所以我们想宣布,我们计划在 Ajax Experience 结束后的第二天举办一个为期一天的小型 **jQuery 会议**。这将是你与 jQuery 团队见面并提出任何萦绕在心头的问题的绝佳机会。我们还将进行一些关于 jQuery 特定方面的演讲。我们很快会提供更多关于此会议的信息。

jQuery UI

今天,我们还很高兴宣布一个我们一直在开发的秘密项目:jQuery UI。这个项目由 Paul Bakaus 编写,是一个全新的拖放库,从头开始开发,考虑了速度和可扩展性。此外,我们还非常重视代码的完整文档和测试 - 允许许多其他开发人员使用和帮助扩展它。

这个库将包含完整的可拖动、可放置、可排序、可调整大小和滑块代码。

你可以在 SVN 库 中查看 Paul 的一些早期工作。

资金和感谢

新的 jQuery UI 库标志着 jQuery 项目的一个新阶段:这是一个我们使用由你(jQuery 用户)捐赠的资金资助的代码片段!

这可以通过两种方式实现:首先是你的持续支持和对 jQuery 项目的 捐赠,其次是 Media Temple 对我们的大方捐赠。这使我们能够将财务资源集中到其他最有利于所有人的项目上。

因此,我想借此机会请求你额外捐款,以帮助我们继续为激动人心的新工作提供资金,你可以在你的网站上使用这些工作。任何帮助都将不胜感激。

美元金额

再次感谢 jQuery 团队以及所有帮助实现此版本发布的人员。这是一个漫长的过程,但我希望您能像我们一样对这个版本感到满意。谢谢,感谢您使用 jQuery!