【问题标题】:What does Google Closure Library offer over jQuery? [closed]Google Closure Library 通过 jQuery 提供了什么? [关闭]
【发布时间】:2009-11-06 20:31:28
【问题描述】:

考虑

  • 业务背景
  • 社区支持
  • 可用的扩展程序
  • 默认功能集
  • 使用简单
  • 和可靠性

为什么你更喜欢一个而不是另一个?

【问题讨论】:

  • 我认为,在人们开始试验应用程序并了解封闭的限制是什么之前,很难说为什么一个比另一个更受欢迎。
  • 这里有一些语法比较:derekslager.com/blog/posts/2010/06/…
  • This article 也可能有助于做出决定。关键教训:“关闭是一个生态系统。它不像 jQuery,你只是在这里和那里使用它来使访问或操作 DOM 更容易。如果你想真正使用 Closure,你必须承诺真正使用它。”
  • 2019 什么是谷歌关闭? :D

标签: jquery google-closure google-closure-library


【解决方案1】:

我会尝试添加我的信息。

不仅仅是另一个 JS 库

据我了解,Google Closure 不仅是另一个 JS 库,它还是一组工具,可以让您优化 JS 代码。使用 jQuery 为您提供了很好的工具和轻量级库,但它不会缩小您自己的代码。 Closure compiler 将。 closure inspector 也可能很有用,因为有时缩小代码的行为与原始代码不同,调试起来很痛苦。它与Firebug 集成并支持单元测试,这两者都是当今开发人员最好的朋友。

文档

我猜想,作为任何新库 VS 一个完善的库,它都将缺乏 jQuery 所拥有的大量扩展和教程的可用性。然而,被谷歌推动应该确保支持和可靠性都很好。目前的documentationtutorial 看起来也都不错。

特点

不过,Closure 的功能看起来不错,而且它的模块化架构也很有前途。我猜谷歌已经在内部使用它很长时间了,这意味着您可以期望所有基本功能(以及更多)都可以实现,并且可能以一种非常优化和可扩展的方式实现。他们试图将其呈现为 JavaScript 的 STL,因此他们应该对其进行优化。

在仔细研究了这些特性之后,与现有的 jQuery 库相比,这似乎是 Web 应用程序开发向前迈出的一步。它猜测它有利于 Google 的内部开发,但诸如检测在线状态(参见 goog.events.OnlineHandler)、在浏览器历史记录中轻松集成 AJAX 请求和 JS 操作(参见 goog.History)或它们提供的大量优秀小部件之类的事情(参见goog.ui package)可能会帮助我们所有人构建更棒的网络应用程序;)!

它带有与 Java 集成的 templates features(谁说 GWT ?),所以这也可能是 Closure 的另一个优点。

易于使用

最后,它看起来非常易于使用。语法可能比简短的 $ jQuery 函数更冗长,但对于 IDE 和自动完成,这不是一个真正的问题。此外,我想说我们可以期待与来自 Google 的 Eclipse 等 IDE 的良好集成。

编辑:根据要求,让我谈谈 GWT 参考。 Google Web Toolkit 是一个 Java 库,允许创建支持 AJAX 的 Web 界面并生成(和优化)所需的 JavaScript 代码。由于 Google Closure 允许创建可在客户端和服务器端(使用 JavaScript 和 Java)使用的模板,我的猜测是很快就可以联合使用它们(如果还没有的话)。

【讨论】:

  • 详细而有意义的答案,谢谢。您能否解释一下对 GWT 的引用是什么意思?恐怕我没听懂。
  • 我认为您还应该在“更多”部分中提及模板库(Soy)。服务器(Java)端和客户端都可以使用相同的模板文件。非常好的实施IMO。意味着我们可以只在 AJAX 查询中发送 JSON 而不是发送 HTML - 节省带宽。
  • 我刚刚发现了一个对 Closure 的批评,但也许这只是 FUD:sitepoint.com/blogs/2009/11/12/…
  • 批评不是 FUD,感谢您的链接。批评集中在 javascript 代码并非处处最佳。这可能是有效的,但它错过了更大的一点。据我了解,Closure 针对非常复杂的 JS 应用程序(在 GMail 的规模上),这会产生一些后果 - 例如并非每一行都是最佳的,因为所有内容都不是由一个出色的编码人员编写的。但相反,它可能会进一步扩展为软件工程框架。
  • @nalpy 正如 cmets 所建议的那样,本文没有提到图书馆有一个可以优化这些编码问题的编译器(而不是压缩器)。
【解决方案2】:

在我对 API 的简要了解中,我发现 jQuery 和 Closure 之间的差异非常显着。

jQuery 基本上只是一种以跨浏览器的方式进行许多频繁操作的简化方式。

Closure 是一个非常新的框架,因为它们提供了一种跨浏览器的方式来使用 <canvas> 标记,例如,它们还添加了新的事件。

因此,这增加了我们通常使用 javascript 执行的操作,它们正在执行人们想要执行的许多操作并将它们放入 API。

例如,他们有一个事件来判断在线状态是否发生了变化。这样就可以判断系统是否在线了。

他们拥有使用 Google Gears 等工具的 javascript 函数,这延续了他们扩展了可以使用 Javascript 完成的功能的事实。

我需要几天时间来消化所有的变化,但我可以看到这可能会对可以开发的 Web 应用程序产生很大的影响。

【讨论】:

    【解决方案3】:

    Closure Library 的最大优点是专为 Closure Compiler 设计的。这为 JavaScript 开发开辟了全新的可能性……

    编译器有几个很酷的功能:

    • 它将可读的 JavaScript 编译成 压缩机器可读 JavaScript - 它在“高级”模式下具有最佳压缩率
    • 代码文档 带有 JSDoc 标签很重要: 编译器读取它,你得到 编译期间的拼写错误警告 在文档中,错误使用了 @constructor,错误的 类型 变量,误用带注释的字段 使用@private 和@protected 等。
    • 如果您编写可重用的 JavaScript 图书馆,例如 OpenLayers 或 Google Maps,您 正式导出您的公共 API - 和 编译器优化你的内部 代码。
    • 最终应用程序可以是 与库一起编译 - 然后是未使用的部分 库被从生产的 代码。依赖关系解决了 由编译器自动生成。
    • 编译器接受要删除的常量 不需要的功能 - 这允许 仅针对特定的编译 浏览器,例如 Mobile WebKit,用于 只有一种 Quirks 模式或 Strict 模式,编译不支持 IE6等
    • 使用 FireBug 进行调试是 即使对于已编译的 源代码的版本。
    • 编译器支持动态生成 可加载的模块,它可以 显着加快加载 最终应用程序,因为代码 可以加载高级功能 仅在需要时。

    详情请看: http://blog.klokantech.com/2010/12/closure-compiler-for-openlayers-3x.html

    【讨论】:

      【解决方案4】:

      编辑:看看this youtube video,它可能会更好地回答有关 Google Closure 的一些问题。

      关于 google 关闭的最佳信息来源可能是项目 discussion group、wiki、文档页面、演示和尚未完成的 book by Michael Bolin,现在可从 safari 图书网站获得。

      有一件事我可以马上告诉 - closurejQuery 的学习曲线更陡峭,但由于库的庞大、清晰的组织以及与编译器一起使用它的好处,这可能是值得的和模板工具。

      closure library 在这方面更像dojo 而不是jQuery,根据 Michael Bolin 的说法,一些概念是从 dojo 借来的。

      google 闭包编译器使用JSDoc 文档系统,该系统同时(如果由程序员正确创建)提供文档并能够在编译时捕获许多错误。

      虽然函数名称比jQuery 的更冗长,但编译器会缩小代码(使用各种优化策略),并且类型检查将节省大量调试代码的时间,因此输入较长名称的时间可能不会一个问题。同时,较长的名称增加了可读性。

      库支持在 quirks 模式下运行的浏览器,以便其他网站可以使用“quirky”html 嵌入脚本

      库使用(但不依赖于)名为 soy 的 javascript 模板系统,它简化了用内容填充文档的过程。

      like jQuery google closure 允许使用库的专用组件通过基于字符串的查询遍历 dom 结构。

      closure 库依赖于点分隔的命名空间,更像Java - 一个非常强大的组织功能。

      在未编译的代码中使用此类命名空间会产生开销,但在已编译的代码中,这些内容将替换为短变量名。

      【讨论】:

      • 我一直在寻找其他东西并最终来到了这里,但很高兴知道like jQuery google closure allows traversing dom structure with the string-based queries using a dedicated component of the library.你能把我链接到一些相关的文档吗?
      • @iSid:我相信他说的是goog.dom.DomHelper,但我个人并没有看到与jQuery相当的查询功能。 @Evgeny:你能告诉我们更多细节吗?
      • @iSid:该功能由goog.dom.query 提供,与 goog.dom 命名空间的其余部分一样,没有记录。
      【解决方案5】:

      我刚刚在insideRIA 上发布了一篇关于 Google Closure 的非常详尽的文章,它回答了这个问题。

      ...关闭规则! ^_^

      【讨论】:

      • 与 jQuery 的直接比较:“[...] jQuery 工作得非常好,可以毫不费力地快速完成伟大的事情,所以 Closure 的“承诺”不是提供更好的算法,而是一种真正更好的、部署 JavaScript 应用程序的组织化和可维护的方式 [...] 闭包编码意味着考虑面向对象的原则,创建多个 js 文件,每个文件代表一个类,将应用程序架构组织成包,最后使用提供的工具进行部署,获得单个、压缩且安全的 JavaScript 文件 [...]"
      【解决方案6】:

      也许我没有得到 jQuery,但我还没有看到真正的 UI 小部件集合(有插件,是的,但你永远不知道它们经过了多么良好的测试,而且通常没有明确的赢家和/或该插件缺少文档)。

      Closure 有 a widgets collection(见演示标签),其中包括在 gmail 中使用的 imageless buttons

      更一般地说,它在发行版中实现了更多功能。这可能不是什么大事,但是当我在寻找像 ajax 历史模块或自动完成这样简单的东西时,我对 jQuery 插件的海洋感到恼火。

      总体而言,它是一个庞大的库 + 工具集,我会熟悉它,只是为了知道有什么可用。

      【讨论】:

      • jqueryui.com 是官方的 ui 小部件集合
      • 是的,从网站上看它有 6 个小部件:Accordion Datepicker Dialog Progressbar Slider Tabs
      • 我用过jQueryUI,我觉得它很弱。它甚至似乎几乎没有在开发中。最后一次添加新小部件是什么时候。它可能是官方的小部件集合,但任何寻找与 jQuery 一起使用的小部件的人最好只在谷歌上搜索第三方 jQuery 小部件。
      • jQueryUI 不仅仅是一组 javascript 小部件,它还有一个很棒的 css 框架。它是我设计 CRUD/管理页面样式的好工具。另外,许多闭包“小部件”是 jQuery 中的 1-2 行,甚至不值得为其编写插件。
      • JQuery 的吸引力不是预制的小部件。它正在以创纪录的时间制作您自己的自定义小部件。我很少接触插件,包括 UI。
      【解决方案7】:

      我感谢 Google 对开源社区的大部分贡献,我确信它有一些很酷的东西,但总的来说,我发现 Closure 笨重、过度劳累和不优雅。如果你必须把所有东西都变成 Java,我想它是非常漂亮的。

      编辑:

      很公平。我真的没有比较。 Closure 就像一个巨大的仓库,里面有你可能想要的所有可能的工具……某个地方。有点像 .NET 或大型 Java 库。一旦你找到了你需要的东西,你就可以找到高度具体的东西来完成高度具体的工作。然后在生产中,您可以删除所有的杂物。

      另一方面,JQuery 更像是一种易于修改的声波螺丝刀。

      【讨论】:

      • 我想了解更多关于 Java 版本的 Closure。你有这个的链接。谢谢
      • 查找“讽刺标签”。你会在那里找到答案。
      【解决方案8】:

      Google Closure 库允许您编译和优化您的 JavaScript。它不是像 jQuery 那样的库。 jQuery 为您提供了可以让您更快地编写自己的 javascript 的功能。

      Google Closure 将帮助您将自己的 javascript 代码最小化,以便通过 Internet 更快地交付。

      长话短说,Google Closure 是一个工具,而 jQuery 是一个类似于 Prototype 的库。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      • 2013-12-03
      • 1970-01-01
      • 2015-02-09
      • 1970-01-01
      相关资源
      最近更新 更多