旧金山 jQuery Meetup 和 Ajax Experience

发布于 作者

旧金山 jQuery Meetup 和 Ajax Experience West

2007年 Ajax Experience West
Ajaxian 和 TechTarget 的朋友们组织了一场很棒的会议,7月25-27日。演讲者众多,讨论了丰富的Web开发领域的最新和最棒的技术。请查看完整的演讲者列表和日程安排。演讲者包括Brendan
Eich
,Mozilla 的首席技术官;JavaScript 的创建者。Chris Wilson,Internet Explorer 平台架构师和Kevin Lynch,Adobe 首席软件架构师。它将是一个充满活力和有趣的论坛。

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

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

此外,John 将在周五午餐时参加一个关于 Ajax 未来发展方向的座谈会。

Glen 将进行一次关于 jQuery 的演讲

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

旧金山 jQuery Meetup

7月26日,我们抓住机会邀请 jQuery 社区的所有成员到 Gordon Biersch San Francisco Brewery 喝饮料、吃小吃和调试。我们是开源的,所以 BYOCC(自带信用卡)。

Yehuda Katz 有特别的 jQuery 赠品,送给第一个1000 25 位为社区成员买一杯饮料的 jQueriers。此外,我们应该还有几本全新的 Learning jQuery 书,作者是 Karl Swedberg & Jonathan 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 Blog 上有一篇关于客户端表单验证的好文章。它描述了在构建自己的客户端验证框架时需要记住的重要事项。

当然,使用现有框架的替代方案是现有的一个。这种方法会产生一些重要的优势,其中之一就是“足够多的眼睛,所有的错误都是浅层的”原则。

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

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

已检查。

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

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

  • 代码膨胀,您的框架会变得太大
  • 由于组合太多可能出错的验证,因此很难在客户端进行测试
  • 业务规则将移动到前端。(稍后会介绍如何使用 Ajax 避免这种情况)

好吧,代码膨胀是我尝试通过大量的重构来解决的问题。当前的代码库有 1446 行(大约一半是内联文档)。几周前,Dan G. Switzer 看过该插件,并能够在几个小时内提供关于特定代码相关问题的绝佳帮助。

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

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

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

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

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

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”进行验证。我还没有看到任何关于类似功能的具体请求,所以如果有人感兴趣,请告诉我。与此同时,一个好的主意可能是使用masked input 插件来帮助和协助用户输入正确的格式。

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

这是一个很好的建议。jQuery 由于其不侵入性而在这方面提供了很大的帮助。在完全没有 JavaScript 的情况下设计您的表单,然后稍后添加它,尽可能地改善用户体验 (UX)。

8. 使脚本 i18n 和 l10n 兼容

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

验证插件允许您通过简单地覆盖它们来翻译所有默认消息。很容易在插件文件之后包含一个包含以下内容的文件

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

这种方法效果很好。您可以将其他翻译收集在同一个文件中,例如用于datepicker 的标签。

然后,包含适当的右侧翻译文件对于用户的区域设置来说只是服务器端问题。

其他问题,例如不同的数字或日期格式,可以通过编写自定义方法或覆盖默认方法(在 $.validator.methods 中)来解决。默认情况下提供了德语日期和数字格式的方法:date(默认 JavaScript Date 格式)、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 多个已修复的错误 和一些增强功能。亮点包括

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

更新 – 7 月 4 日我们刚刚完成了一个快速错误修复版本,版本号为 1.1.3.1,它修复了 一些未解决的问题

下载

与往常一样,如果你发现此版本中的任何错误,请将其发布到 jQuery 错误跟踪器

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 “foo.bar” 的 div)选择具有 ID(或其他选择器)的元素,这是经常被要求的特性

$("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 中被移除后,此选择器现在又回来了,因为广大用户的要求。它允许你定位空格分隔属性(例如类或 rel 属性)中的单个项目。

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

动画改进

速度: 动画现在速度更快、更流畅。此外,你可以在不降低速度的情况下运行更多同时进行的动画。

测试: 我们现在有一个专门用于动画的测试套件——这使我们能够修复许多以前无法定位的紧迫的动画错误。

DOM 事件监听器

在内部,jQuery 事件系统已被彻底修改为使用 DOM 事件系统,而不是传统的“onclick” 样式的事件处理程序绑定。这项改进允许你在使用库时更加不具侵入性(不影响周围其他库的流程)。此外,它还有助于解决绑定到 IFrames 的事件监听器的一些未解决问题。

事件规范化

已经采取了一些措施来规范化键盘和鼠标事件。现在你可以访问 event.which 属性来获取有关按下或按钮的特定键的更多详细信息。

多个 .is()

.is() 方法现在可以接受多个用逗号分隔的选择器。这允许你将 jQuery 集合与多个选择器进行测试。

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

浏览器版本

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

jQuery.browser.version

更多错误修复

请参阅 工单列表 以获取此版本中解决的所有问题的完整列表。

jQuery 的未来

我们非常关注 jQuery 项目的进展方向。我们现在专注于许多不同的方面,但主要关注点仍然是核心 jQuery 库的进步。我们已经规划了接下来的两个版本,你可以在下面了解更多信息

jQuery 1.1.4

这将是 jQuery 1.1 分支的最后一个版本——另一个包含一些小改进的错误修复版本。此版本还将标记一些方法为已弃用,以符合即将发布的 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 开发密集型应用程序和游戏的演讲。

由于将在波士顿 Ajax Experience 上有许多 jQuery 团队成员,我们想宣布我们计划在 Ajax Experience 之后的一天举办一个小型、为期一天的 jQuery 会议。这将是与 jQuery 团队会面并提出任何令人困扰的问题的绝佳机会。我们还将发表一些关于 jQuery 特定方面的演讲。我们很快会提供更多详细信息。

jQuery UI

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

该库将包含 Draggables、Droppables、Sortables、Resizables 和 Slider 的完整代码。

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

资金和感谢

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

这是通过两种方式实现的:首先是通过你持续的支持和 对 jQuery 项目的捐赠,其次是 Media Temple 的慷慨服务器捐赠。这使我们能够将财务资源集中在其他对每个人都有益的项目上。

因此,我想借此机会请求更多捐赠,以帮助我们继续资助令人兴奋的新工作,你可以在你的网站中使用这些工作。任何帮助都将不胜感激。

美元金额

再次感谢 jQuery 团队和所有帮助使此版本成为可能的人。这需要付出很多努力,但我希望你对这个版本感到满意,就像我们一样。谢谢——感谢你使用 jQuery!