Google Closure Library通过jQuery提供什么?

时间:2009-11-06 20:31:29

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

考虑

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

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

8 个答案:

答案 0 :(得分:176)

我会尝试添加我的信息。

不仅仅是另一个JS lib

据我所知,Google Closure不仅是另一个JS库,而且它也是一组允许您优化JS代码的工具。使用jQuery为您提供了很好的工具和轻量级的库,但它并没有缩小您自己的代码。 Closure compiler会。 closure inspector也可能有用,因为有时缩小的代码具有与原始代码不同的行为,并且很难调试。它集成了Firebug和支持单元测试,现在都是开发人员最好的朋友。

文档

我想,正如任何一个新的库VS一个成熟的库,它将缺乏jQuery的大量扩展和教程的可用性。然而,被Google推动应该确保支持和可靠性都非常好。目前的documentationtutorial似乎也非常好。

功能

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

在仔细研究这些功能之后,与现有的jQuery库相比,这似乎是Web应用程序开发的一个进步。它认为它有利于谷歌的内部发展,但有一些事情,比如检测在线状态(参见goog.events.OnlineHandler),在浏览器历史记录中轻松集成AJAX请求和JS操作(参见goog.History),或者他们提供的优秀小部件(请参阅goog.ui package)可以帮助我们所有人构建更加精彩的Web应用程序;)!

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

易于使用

最后,它看起来很简单。语法可能比短$ jQuery函数更冗长,但是对于IDE和自动完成,它不是一个真正的问题。此外,我想我们可以期待在像Eclipse这样来自Google的IDE中实现良好的集成。

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

答案 1 :(得分:30)

在我简要介绍API的过程中,我发现jQuery和Closure之间的区别非常明显。

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

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

因此,这增加了我们通常使用javascript做的事情,他们正在进行许多人们想做的操作并将它们放入API中。

例如,他们有一个事件来判断在线状态是否已经改变。所以你可以判断系统是否在线。

他们拥有使用Google Gears等工具的javascript函数,这些函数继续扩展了Javascript的功能。

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

答案 2 :(得分:25)

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

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

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

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

答案 3 :(得分:20)

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

关于谷歌关闭的最佳信息来源可能是项目discussion group,wiki,doc页面,演示以及尚未完成的book by Michael Bolin,现在可以从safari书籍网站获得。

我可以马上告诉你一件事 - closurejQuery的学习曲线比较陡峭,但由于图书馆的广阔性,清晰的组织和使用它的好处,这可能是值得的。与编译器和模板工具一起使用。

根据Michael Bolin的说法,

closure库在这方面更像dojo而不是jQuery,而且有些概念是从dojo借来的。

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

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

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

库与(但不依赖于)一个名为soy的javascript模板系统一起工作,简化了用内容填充文档。

jQuery类似,Google closure允许使用库的专用组件遍历基于字符串的查询的dom结构。

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

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

答案 4 :(得分:8)

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

......关闭规则! ^ _ ^

答案 5 :(得分:7)

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

Closure除其他外还有a widgets collection(参见演示标签),包括gmail中使用的imageless buttons

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

总的来说,这是一个庞大的图书馆和一套工具,我会熟悉它,只是为了知道可用的东西。

答案 6 :(得分:1)

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

编辑:

足够公平。我没有真正比较。关闭就像一个巨大的仓库,你可能想要的所有工具......在某个地方。有点像.NET或大型Java库。找到所需内容后,您可以找到具有高度特定性的高度特定的工作。然后为了生产你可以删除所有的残余。

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

答案 7 :(得分:0)

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

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

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