关于 Yehuda Katz

我从 90 年代中期就开始做网页设计,从很小的时候就开始接触计算机。最近我开始接触 Rails 和 jQuery(先接触 Rails,后接触 jQuery)。我正在开发一个 Rails 插件,用 jQuery 代替 Prototype 作为默认的 Rails Javascript 库。这意味着要替换大量的辅助函数(最终还要看看 RJS),而我只触及了表面。如果有人感兴趣,我真的很需要帮助。我还在开发一个秘密维基,叫做 Anarki(更多信息将在项目开发过程中公布)。在职业生涯中,我在纽约布鲁克林区一家大型非盈利组织工作,还为一家曼哈顿初创公司做了一些兼职工作。今年夏天,我还在做 Google Summer of Code 项目,为俄勒冈州虚拟学校区工作。

jQuery 实战(享受 30% 的折扣!)

发布于 作者

大家好,

正如你们中的许多人已经知道的那样,我一直致力于编写一本关于 jQuery 的书籍《jQuery 实战》,由 Manning 出版社出版。

几乎整本书都在 MEAP(Manning 早期访问计划)上提供,它将于今年 12 月出版。

这本书本身非常棒。它试图通过一个有用的叙述来提供你需要的信息,包括对 jQuery 某些部分的动机。在我看来,这本书最棒的一点是实验环节,它允许你测试 jQuery 的各个部分,而无需构建完整的测试用例。例如,有一个选择器实验环节,它允许你直观地查看给定 jQuery 选择器将选择哪些元素,还有一个拖放实验环节,它允许你通过单选按钮测试拖放选项,然后快速查看结果。

它是目前唯一一本涵盖 jQuery 1.2 的书籍,同时也涵盖了 jQuery UI 的重要部分(包括可拖动/可放置基元中未记录的回调对象)。在书的最后,你会看到完整的章节示例(我最喜欢的是 Ajax 章节,它涵盖了构建一个使用 Ajax 的商店,出售靴子 ;) ),并且重点关注 jQuery 最佳实践和非侵入式脚本。

这本书本身非常符合 jQuery 的精神:简短且直截了当,同时涵盖了完全理解主题所需的重要背景资料(尤其是事件绑定和 Ajax 等非简单主题)。

事不宜迟,你可以在 Manning 网站 上购买这本书(现在你将获得预发布内容,并在 12 月发布完整版)。如果你在 10 月底之前使用优惠券代码 JQM30,你还可以获得 30% 的折扣。

视觉 jQuery 杂志:第二部分

发布于 作者

那些已经关注了一段时间的人都知道,去年 9 月我发布了第一期《视觉 jQuery 杂志》。10 月,该杂志也以法语出版。

该杂志对重要的 jQuery 社区成员进行了采访(例如创建者 John Resig、插件编辑 Dave Cardwell 等),还刊登了关于 jQuery 功能和实现的文章,甚至还有一些关于其他 Javascript 库的文章,并配有高质量的图形和原创艺术。

积极的反馈令人难以置信,人们似乎真的很喜欢它。不幸的是,虽然我最初计划将该杂志作为月刊出版,但随着我的日程安排越来越紧张,这件事就被搁置了。自从第一期出版以来,我找到了一份新工作(当时是新的;现在已经八九个月了),搬到了全国各地(从纽约到加州),并且完成了第一本书的很大一部分(敬请期待详细信息!)。很明显,事情一直很忙。

自从第一期出版以来,第二期的缺失一直在困扰着我,我决定现在该把它做出来了(我承认,这也主要是由于我的好朋友 Rey Bango 最近重新努力推动 jQuery 的发展)。值得庆幸的是,杂志的首席设计师和法国开发人员/翻译团队都表达了对帮助出版第二期的兴趣,这使得这个目标更加切实可行。

第一期是一个实验,并且进展非常顺利。不过,由于是第一期,所以它更像是一场“Yehuda 个人秀”。我希望第二期能够更加注重合作贡献;有很多 jQuery 主题需要探索,并且有很多团队成员和用户拥有令人着迷的故事要讲。

因此,我要在此发布消息。我正在寻找《视觉 jQuery 杂志》第二期的贡献。文章的长度可以有很大的变化,从简短的三个段落到三页的专题。它们可以是教程、专题文章、访谈以及其他许多你肯定会想到的东西。只是几个简短的(而且相当灵活的)指导方针

  • 文章必须采用杂志或报纸格式(如果你的投稿确实是一篇写作作品——插图也将被考虑)。我对这一点非常宽松,但它应该是一些你可以在杂志上看到的。
  • 文章必须是关于 jQuery 社区及时且相关的主题,具有广泛的吸引力。
  • 文章不能是广告(但它可能,当然,可以展示你编写的插件,只要它具有广泛的吸引力)。
  • 文章必须是事实正确的。
  • 杂志工作人员将编辑你的文章,以确保语法、空格和风格正确。你将在出版之前收到编辑后的副本以供审核。
  • 杂志工作人员将根据需要添加图形和其他视觉元素。
  • 请在花大量时间撰写文章之前发送投稿建议或简短描述;这样我们就可以避免空间不足,并确保所有可印刷内容都能被收录。请将投稿和读者来信发送至 editor AT visualjquery DOT com。

    正如我在这个项目的开始就说过的,我认为这本杂志确实有可能向新用户开放 jQuery 世界,并希望通过推动社区制作内容的界限,我们可以让 jQuery 继续沿着目前积极的方向发展。我个人对此感到非常兴奋。

    我还会接受广告,所有收益都将捐赠给 jQuery 项目。如果你有兴趣,请给我发邮件!

    新的命令行 jQuery 工具

    发布于 作者

    更新:我已经完全重构了 jcheat,并添加了大量新的功能,包括大量可以在任何组合中使用的过滤器。执行 gem 更新并运行 jcheat -h 以获取完整的用法详细信息。

    我发布了一个新的工具 jquery-cheat,它允许你直接从命令行获取有关 jQuery API 的信息。你可以获取函数的描述,每个模块中的函数列表,在所有函数描述列表中搜索字符串,获取名称匹配字符串的所有函数的列表,以及一些其他很酷的技巧。

    一些示例

    # jcheat desc clearForm
    --------------------------------------------------------------------------------
    Name:         clearForm()
    Description:  Clears the form data.
                  
    Details:      Clears the form data.  Takes the following actions on the
                  form's input fields:  - input text fields will have their
                  'value' property set to the empty string  - select elements
                  will have their 'selectedIndex' property set to -1  - checkbox
                  and radio inputs will have their 'checked' property set to
                  false  - inputs of type submit, button, reset, and hidden will
                  *not* be effected  - button elements will *not* be effected
                  
    Returns:      jQuery
    --------------------------------------------------------------------------------
    |                                   EXAMPLES                                   |
    --------------------------------------------------------------------------------
    ---------------
    | Description |
    ---------------
    Clears all forms on the page.
    
    --------
    | Code |
    --------
    $('form').clearForm();
    
    # jcheat namelike $.ajax
    $.ajaxTimeout(time) in Ajax
    $.ajaxSetup(settings) in Ajax
    $.ajax(properties) in Ajax
    
    # jcheat like clear field
    clearForm() in Plugins/Form
    clearFields() in Plugins/Form
    
    

    你可以通过以下操作获取该工具

    gem install jquery-cheat -y
    

    -y 用于自动包含 hpricot,这是一个必需的依赖项。

    RailsConf 上的 jQuery 会议

    发布于 作者

    RailsConf 2007

    我很高兴地宣布,我在 Birds of a Feather 会议上关于“Rails 上的 jQuery”的提案已获批准!

    如果你参加了 RailsConf,请在周四晚上 9:30 前往 c125 室,加入讨论。我将讨论我在 Rails 上的 jQuery 项目上的持续工作,如果有任何人感兴趣,我还会演示一些代码。

    如果你有兴趣了解其他人如何解决将 jQuery 与 Rails 集成的问题,或者只是想分享你完成的一些很酷的事情,请过来看看。在那里见!

    更多详细信息

    Yehuda 刚刚在 Rails 上的 jQuery 工作原理 上发布了更多详细信息

    自从我上次公开讨论 Rails 上的 jQuery 以来,我探索了很多途径,编写了很多代码,并得出了一些结论

    • jQuery 和非侵入式 Javascript 本质上与尝试在标记中描述行为不兼容,就像 Rails 通过“Javascript 助手”所做的那样。
    • 尝试解决这个问题,特别是 Rails 的 UJS,仍然需要你将你的 JS 行为包含在你的视图中,然后在运行时将它们汇集到 Javascript 文件中(并根据需要进行缓存)。如果你想在多个页面中包含相同的 JS 行为,你需要创建自定义助手并调用它们。
    • jQuery 已经是非侵入式 Javascript 的完美机制,它直接内置在库中
    • jQuery 开发人员面临的最大问题不是简单性(这在库中是免费提供的),而是难以在需要它们的 Rails 视图中包含正确的 jQuery“模块”。

    在中等或更高复杂度的应用程序中,使用 jQuery 和 Rails 最常见的问题是权衡利弊,是在单个 application.js 文件中包含所有内容(这会导致大型应用程序出现严重的延迟),还是使用多个模块化文件(这些文件很难按需正确包含)。

    这对那些想更多使用 Rails 的 jQuery 开发人员来说是一个问题,也对那些习惯使用 Prototype 助手并希望使用 jQuery 库作为直接替换的 Rails 开发人员来说是一个问题。在 jQuery on Rails 的第一个版本中,我将以想要使用 Rails 的 jQuery 开发人员为目标。换句话说,如果您了解 jQuery 或者愿意使用 jQuery,那么 jQuery on Rails 适合您。

    如果您不想学习 jQuery,并且只想用 Ruby 进行编程,那么这个版本的 jQuery 不适合您。将来会发布一个包含一些针对纯 Ruby 开发人员的功能的版本,但我认为非侵入式 JavaScript 从根本上来说与这种思维模式不兼容。

    说了这么多,jQuery on Rails 到底做了什么?

    首先,它是一个 Rails 插件,您可以通过在 application.rhtml 文件中添加 <%= include_jquery %> 来激活它。当您的服务器启动时,它会解析所有 JavaScript 文件,并在这些文件中识别选择器。当在您的布局中调用 include_jquery 时,它会获取渲染后的 HTML,并使用 Hpricot(它与 jQuery 共享语法)来确定在服务器启动时识别的选择器中的任何实例是否存在。

    包含选择器并且这些选择器也存在于您的 HTML 中的 JavaScript 文件将被加载,并按预期运行。

    简而言之

    • 创建您的 JavaScript 文件,像往常一样使用选择器
    • 在您的布局中使用 include_jquery
    • 您就完成了

    jQuery IRC 频道

    发布日期: 作者:

    除了 jQuery 优秀的 邮件列表文档 之外,用户还可以到另一个地方寻求有关 jQuery 问题的帮助:我们有一个非常活跃的 jQuery IRC 频道。

    尽管从未真正公开宣布,但该频道目前平均拥有 50 多个同时在线用户,包括一些友好的 jQuery 机器人!该频道托管在 irc.freenode.net,#jquery 总是有一些在线用户愿意回答您的问题(通常在提出问题后的几分钟内就会得到解答)。

    以下信息是您连接到该频道所需的信息 连接到频道
    服务器: irc.freenode.net
    房间: #jquery

    jQuery 团队成员,特别是 John Resig(昵称:JohnResig)、Joern Zaefferer(昵称:JoernZaefferer)和 Yehuda Katz(昵称:wycats)经常在线,帮助经验丰富的用户和新手用户解决复杂问题和简单问题。

    如果您需要快速解决以下问题,IRC 频道是最理想的场所

    • JavaScript
    • jQuery 语法
    • 问题解决
    • 奇怪的错误

    如果您的问题比较深入,我们可能会要求您在 邮件列表错误跟踪器 上发布,以便我们能够在更合适的环境中为您提供帮助。

    此外,我们最近开始记录该频道,因此您现在可以回过头来看看以前问题的答案: jQuery IRC 频道日志

    Visual jQuery 杂志发布

    发布日期: 作者:

    第 1 期封面全新的 Visual jQuery 杂志的第一期已经发布。它可以 以 PDF 格式下载

    Visual jQuery 杂志的目的是为初学者和高级开发人员提供有关 jQuery 的信息,采访 jQuery 社区的有趣成员,以及有关如何通过插件和其他技巧最大限度地利用该框架的详细信息。

    第一期包括

    • 关于该杂志的社论评论
    • 哲学上的胜利: 为什么 jQuery 的方法有效
    • 幕后英雄: 对 John Resig 的采访
    • jQuery 教程: jQuery 对象简介
    • 插件 用于丰富的应用程序开发。
    • 认识 Dave Cardwell,jqBrowser 和 jqMaxMin 的开发者
    • 一个很酷的封底广告(相信我,您想看看)

    第 2 期将有更多 jQuery 好内容

    • 认识 Klaus Hartl,jQuery 选项卡的开发者,他在 Plazes 工作
    • jQuery 教程: jQuery 的 AJAX 功能简介
    • 插件对视觉效果很有用
    • 来信 来自我们的读者

    所以,行动起来,不要犹豫,下载 今天的杂志吧!

    更新:请 挖掘该杂志 或将其添加到您的其他社交书签网站,如 delicious。

    将 jQuery 文档提升到一个新的水平

    发布日期: 作者:

    jQuery 1.0 巩固了许多框架,但也引入了一些巧妙的结构变化。

    首先,该框架现在通过 make 文件构建,因此任何人都可以从 Subversion 中检出 jQuery,并编译打包或未打包的 jquery.js 以供其网站使用。

    其次,jQuery 现在包含 内置测试,make 文件可以构建测试套件,然后用户可以在其喜欢的浏览器中运行该套件,以确保最新签入的版本符合标准。目前还没有很多测试用例,但这种情况应该会随着时间的推移而改变(主要是因为添加它们非常容易)。

    然而,对我来说,最重要的是包含了内联文档。从 jQuery 1.0 版本开始,框架文档 包含在源文件中,jQuery 的维护者 John Resig 编写了一个解析器,该解析器将在 make 文件中生成文档的 XML 版本(一个简单的make docs将构建文档)。

    Visual jQuery

    在 1.0 版本发布之前,我将旧的 Visual jQuery 网站从一个基于 Rails 的解决方案(需要手动输入函数)转换为一个网站,该网站在提交到主干时会动态加载文档。

    对于技术水平较低的人来说,这意味着 Visual jQuery 现在将在 jQuery 更新后几乎立即更新。许多人发现视觉文档很方便,易于使用,新版本力求继续保持这种易用性。

    感谢 John,他的解析器生成的输出文件对于 Visual jQuery 等网站来说非常优化。他确实将编写高质量文档作为优先事项。从我的角度来看,将 jQuery 与竞争对手区分开来的一个主要因素是它强调提供可读性强且高质量的文档。我很高兴地说 jQuery 做出了正确的选择。在接下来的几天里,John 将完整记录所有 jQuery 函数(还有一些函数待记录),视觉文档将完整地体现 jQuery API

    Visual jQuery 杂志

    The Magazine

    有了这些,我有一些公告。

    1. Visual jQuery 将在未来一两周内推出一项主要的新功能。具体来说,用户可以通过实时搜索框过滤函数(按名称和描述)。该功能将使查找特定函数变得更容易。
    2. Visual jQuery 将推出一个月刊在线杂志。它将以 PDF 格式发布,并免费提供。第一期将包括对 John Resig 的采访,我们将在关于最新和最棒的 jQuery 插件的系列文章中对 John Resig 进行采访,并将对 jQuery 对象(整个 jQuery 框架的核心)进行视觉展示。该杂志将在每个月的第三个星期三发布,因此该杂志的第一期,即 2006 年 9 月刊,将在 9 月 20 日发布。

    与往常一样,请查看 VisualjQuery.com,了解最新的 Visual jQuery 文档以及有关该杂志的进一步公告。

    为什么 jQuery 的哲学更好

    发布日期: 作者:

    本博客上已经发表了很多关于 jQuery 和 Prototype 之间代码大小差异的文章。这些文章的基本前提(我同意)是,由于 jQuery 代码的结构方式,与 Prototype 相比,框架中所有典型的 Javascript 设计模式都变得更短、更简单。

    在很长一段时间里,我承认自己是一个 Prototype 爱好者。当我开始做 Rails 工作时,我发现了这个框架,对于 Rails 开发人员来说,几乎没有其他选择。Prototype 以其所有丑陋之处融入了 Rails,并且很难放弃 Rails 通过手动编写 Javascript 代码带来的生产力提升。更进一步地说,这就是我开始着手开发 jQuery on Rails 的原因,它的目标是允许 Rails 开发人员将 jQuery 作为 Prototype 的直接替换。

    但回到这篇文章的目的,jQuery 的编程理念与 Prototype 的编程理念在根本上有所不同,不仅仅是代码大小。事实上,这种理念上的差异与 Java 和 Ruby 之间的理念差异非常相似,因此 Rails 社区如此全面地拥抱 Prototype 颇具讽刺意味。

    让我们看看一些代码比较。首先,在特定节点之后添加一些任意 HTML。

    在 Prototype 中

    new Insertion.After('myId', 'Arbitrary HTML');

    在 jQuery 中

    $('#myId').after('Arbitrary HTML');

    现在,我们还没有在减少代码冗余方面做太多工作(尽管 jQuery 的代码更简洁),但在 Prototype 和 jQuery 处理问题的方式上存在根本差异。

    Prototype 创建了一系列单片,每个类都封装了一些功能。然后,开发人员传入一个 ID 和其他一些参数,类就会执行它应该执行的操作。非常类似于 Java 封装功能的方式(例如 Math 类)。**注意:**这并不是说 Java 不能以这种方式做事情。

    jQuery 以一种根本不同的方式处理问题。它将 HTML 节点集合视为要向其传递消息的对象(更像是传统的 Ruby 方式)。因此,它没有使用单独的类来在 HTML 节点之后添加文本,而是将功能粘贴到 jQuery 对象上,该对象由 $ 函数返回。相比之下,Prototype 的 $ 函数返回一个普通的 DOM 节点。

    Prototype 尝试在其最新 RC 版本中添加的 $$ 方法来实现类似的功能,但存在根本差异。虽然 Prototype 的 $$ 返回一个 DOM 元素数组,但 jQuery 的 $ 是整个框架的基础。几乎所有 jQuery 函数都绑定到 jQuery 对象,该对象由 $ 方法返回。
    jQuery 方式的优势非常明显

    • 可链式调用。 由于 jQuery 对象具有粘贴在其上的功能,因此它们会返回其他 jQuery 对象,开发人员可以将其他消息传递给这些对象。jQuery 网站上的一个简单示例是 $(“p.surprise”).addClass(“ohmy”).show(“slow”);
    • 使用 CSS 选择器和 XPath 运算符。 由于 jQuery 将消息传递给对象,因此它可以(并且已经)在 $ 方法中实现额外的选择器功能。粘贴到 jQuery 对象上的方法只看到一个类似数组的对象,其中包含一系列 DOM 元素。它不关心我们是如何获取它们的。因此,插件开发人员可以轻松地将其他解析器添加到 $ 方法中,或将其他函数粘贴到 jQuery 对象中。
    • 这带我们来到了插件开发。 jQuery 方式非常有利于插件开发。添加利用 jQuery 对象的功能非常容易,并且 jQuery 插件通常比其对应的插件短得多。 jQuery 插件
    • 自动循环。 jQuery 方法需要自动循环遍历数组中的所有 DOM 元素,并应用所需的方法。因此 $(expression).after(‘some HTML’) 透明地将 HTML 添加到表达式返回的每个元素之后。例如,$(‘p’).after(‘some HTML’) 将在页面上的每个 <p> 之后添加 ‘some HTML’。就我个人而言,我认为在大多数情况下消除代码中的迭代(在大多数情况下)是使用 jQuery 的最实用、最日常的优势之一。
    • 建立在自身之上。 随着 jQuery 的成熟,在现有架构之上构建插件变得越来越容易。由于所有 jQuery 函数都自动循环,因此使用现有的 jQuery 函数意味着令人讨厌的迭代几乎消失了。

    还有更多,但贯穿所有优势的主线来自于 John Resig 非常细致的方式,他让 jQuery 对象/数组接受传递的消息,而不是构建各种单片功能块,这些块中的每一个都必须从头开始构建。

    其他一些例子
    Prototype 中的 AJAX 更新器

    new Ajax.Updater('placeholder', url, { method: 'get', parameters: par });

    jQuery 中的 AJAX 更新器

    $('#placeholder').load(url + par);

    注意:此示例不处理我们在想要将响应加载到每个 <p> 对象中时获得的明显迭代优势,例如。

    在 Prototype 中为元素添加类

    Element.addClassName('element', 'className');

    在 jQuery 中为元素添加类

    $('#element').addClass('className');

    在 Prototype 中为一组元素添加类

    $$('.element').each(function(node) {
    Element.addClassName(node, 'className');
    }

    在 jQuery 中为一组元素添加类

    $('.element').addClass('className');

    最后一个是最清楚地体现了方法学差异的例子。由于 jQuery 将消息传递给 jQuery 对象,因此代码几乎没有改变。jQuery 不关心我们现在是为一组对象还是一个对象添加类;底层代码是相同的(将类添加到对象中的元素集中)。另一方面,Prototype 需要迭代器。

    随着代码变得越来越复杂,jQuery 轻松地扩展,而嵌套循环在 Prototype 这样的框架中成为常态。

    [更新] 一位敏锐的读者(Mislav)指出,Prototype 确实做了一些 jQuery 所做的事情。Prototype 似乎将 Element 类绑定到 DOM 元素,允许 $(‘myElement’).hide() 这样的操作,等等。但是,它只适用于 Element 模块,并且似乎只适用于单个 DOM 元素。绑定 Elements 模块很酷,但这更多的是一个事后想法,而不是 jQuery 将其作为一项基本设计决策的方式。