jQuery 符合 OpenAjax 标准

发布日期 作者

OpenAjax Alliance

近几个月来,一项新计划正在形成,旨在标准化现有的各种 Ajax 和 JavaScript 代码库。一些公司实体已联手起草新的OpenAjax 标准(包括 IBM、Adobe、Opera 和 Mozilla)。

今天,我们宣布了一个新插件,您可以使用它使 jQuery 符合 OpenAjax 标准。通过这样做,jQuery 成为首批使其代码库符合新标准的项目之一。

目前,符合标准的要求相对简单,但仍然非常重要。相关规则可以概括如下

  • 所有库都必须向主 OpenAjax 库注册自身(名称、版本和命名空间)。
  • 所有库都必须注册它们使用的任何全局变量(在 jQuery 的情况下,它是“jQuery”,并且可以选择“$” - 默认情况下只包含“jQuery”)。
  • 任何尝试注册“onload”或“onunload”处理程序都必须通过 OpenAjax 库。在 jQuery 的情况下,如果您执行:$(window).load(function),并且包含了 OpenAjax,jQuery 将 defer to OpenAjax 的解决方案。
  • 库不得干扰其他库遍历 HTML DOM 文档的能力。

您可以查看jQuery 的符合标准结果,以验证它是否确实通过了测试套件。

如果您希望将 jQuery 与其他支持 OpenAjax 的库一起使用,该过程相当简单。

步骤 1 下载jQuery OpenAjax 插件 的副本到您的服务器。

步骤 2 在包含 jQuery 之后,将该库包含到您的站点中。

<script src="jquery.js"></script>
<script src="jquery.openajax.js"></script>

确保在包含官方 OpenAjax 库本身之后,包含 jQuery 和 jQuery OpenAjax 插件。

就是这样!jQuery 现在将与 OpenAjax 核心库愉快地协同工作。

需要注意的是,目前,jQuery 并非OpenAjax Alliance 的一部分,但我们正在申请加入,并渴望开始积极参与。

关于“jQuery 符合 OpenAjax 标准”的 10 条评论

  1. 我认为您应该避免在插件中硬编码 jQuery 版本号
    OpenAjax.registerLibrary(“jQuery”, “https://jqueryjs.cn/”, “1.1”);
    插件应该在注册 jQuery 到 OpenAjax 库之前检查是否已加载 JQuery,并使用其版本字符串
    OpenAjax.registerLibrary(“jQuery”, “https://jqueryjs.cn/”, JQuery.fn.jquery);

  2. 这个“新计划”乍一看似乎是个好主意。然而,实际上,它看起来更像是一个糟糕的库,它将所有最糟糕的常见问题解决方案塞进一个臃肿且编写糟糕的 JavaScript 文件中。它更喜欢 attachEvent 而不是 addEventListener。它的“标记扫描器”实际上是一个缓慢而笨重的 DOM 遍历器。它创建了许多毫无意义的全局变量,尽管它声称会阻止这种情况。我想喜欢它,但它太糟糕了,我无法接受。我是不是遗漏了什么?

  3. 到目前为止,我还没有感到兴奋!:-( 对我们来说,作为 jQuery 用户,有什么好处?我的意思是,为什么我们应该追求 OpenAjax 兼容性?
    据我了解,它会使我们的 jQuery 安装速度变慢,因为它在某些方面依赖于 OpenAjax 函数。

  4. @Dean:我们最近收到了很多关于 OpenAjax 兼容性的询问,特别是来自想要获得互操作性保证的企业用户。我们将其创建为一个插件,以便这些用户可以在此设置中使用 jQuery,但不需要 OpenAjax 兼容性的用户可以继续使用 jQuery 的当前形式。

    @Dominik:它是一个插件,因此如果您处于需要遵守 OpenAjax 标准的情况,我们现在提供了这种选择。如果不是,您可以继续像往常一样使用 jQuery。

  5. 虽然我没有看到实际的库,因此无法发表评论,但我可以评论这个所谓的“Open”-Ajax 计划的价值(或缺乏价值)。充其量,这似乎是在试图修复一个没有坏掉的东西,最坏的情况下,这是对开放标准施加企业控制的掩盖尝试。坦率地说,我很惊讶微软本身没有带头。

  6. @Nate:我明白你的意思。但这确实很难,因为你既想帮助需要这种兼容性的人,又想确保项目能够朝着你想要的方向发展。我认为我们在这里取得了很好的平衡。

  7. 嗯……就像这里的一些人一样,我并不完全支持 OpenAjax。

    它有优点也有缺点。

    优点是企业开发者需要互操作性,而 OpenAjax 旨在做到这一点。这应该有望为 jQuery 带来更多用户。

    缺点是我认为其中一些东西不太好。我将引用 Dean Edwards 的分析,因为他提出了与我心中所想相同的想法。不过,它是一个插件,因此不需要包含和使用它。

    总而言之,John 和他的团队确实努力将 jQuery 推向更广阔的领域,正如 Ext 公告所证明的那样,所以干得漂亮!

  8. 我不明白大家在抱怨什么。它是一个插件。如果你需要它,就使用它,如果你不需要,就不要使用它。

    这就是使 jQuery 如此强大的原因,因为它能够通过插件添加类似的东西,而不会触及任何核心代码。

  9. Tony,你可以使用所有现有的 JS 框架“添加类似的东西”。jQuery 并不是唯一能做到这一点的,甚至也不是最擅长这一点的。

    如果你不明白大家在抱怨什么,我建议你研究一下 OpenAjax 并形成自己的看法。

    我担心的是,“标准”距离稳定还有很长一段时间,将来会添加更多要求,这将使遵守标准变得更加困难,并且会带来更多僵化。这显然不利于 jQuery 整体发展。如果将来 jQuery 核心代码没有任何让步,那么就不会有问题,但这真的是“拭目以待”的情况。

  10. @All:我已经将我对这件事的看法发布在这里
    http://ejohn.org/blog/thoughts-on-openajax/
    对不起,但我无法将它控制在 1400 字以内 ;-)

    @Dominik: 此插件不会影响您的 jQuery 代码的速度。您甚至不需要使用此插件(只有在您倾向于使用 OpenAjax Hub 并让 jQuery 连接到它时,才需要包含它)。目前,我还没有看到将此代码包含在 jQuery 核心中的理由。