191

考虑到

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

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

4

8 回答 8

176

我会尝试添加我的信息。

不仅仅是另一个 JS 库

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

文档

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

特征

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

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

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

便于使用

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

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

于 2009-11-06T21:13:37.420 回答
30

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

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

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

所以,这增加了我们通常用 javascript 做的事情,他们正在接受人们想做的许多操作并将它们放入 API。

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

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

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

于 2009-11-08T02:47:27.113 回答
25

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

于 2011-06-16T09:55:35.393 回答
20

编辑:看看这个 youtube 视频,它可能会更好地回答一些关于 Google Closure 的问题。

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

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

closure根据迈克尔·博林的说法,图书馆在这方面更像是dojojQuery而且一些概念是从 那里借来的。dojo

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

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

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

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

jQuerygoogle一样closure,允许使用库的专用组件通过基于字符串的查询来遍历 dom 结构。

closure库更依赖于点分隔的命名空间Java——一个非常强大的组织特性。

使用这样的命名空间会在未编译的代码中产生开销,但在编译的代码中,这些东西会被短变量名替换。

于 2010-02-26T02:41:38.277 回答
8

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

...关闭规则!^_^

于 2009-11-19T21:16:43.220 回答
7

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

Closure 有一个小部件集合(参见演示选项卡),其中包括gmail 中使用的无图像按钮。

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

总体而言,它是一个庞大的库 + 工具集,我将熟悉它只是为了了解可用的内容。

于 2009-11-08T02:20:22.110 回答
1

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

编辑:

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

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

于 2010-12-01T06:39:43.600 回答
0

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

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

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

于 2009-11-06T21:25:26.193 回答