Google Closure Library通过jQuery提供了什么?[关闭]


190

考虑中

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

为什么您偏爱另一个?


1
我认为在人们开始尝试应用程序并了解封闭的局限性之前,很难说为什么一个比另一个更受欢迎。
詹姆斯·布莱克

3
一些语法比较的位置:derekslager.com/blog/posts/2010/06/...
user194743

4
本文还可以帮助您做出决定。关键课程:“封闭是一个生态系统。它与jQuery不同,您只是在各处使用它来简化对DOM的访问或操作。如果您想真正使用Closure,则必须做出承诺才能真正使用它。”
Dan Abramov

2019什么是谷歌关闭?:D
evilReiko

Answers:


176

我将尝试添加我的信息。

不只是另一个JS库

据我了解,Google Closure不仅是另一个JS库,而且还是允许您优化JS代码的一组工具。使用jQuery可为您提供良好的工具和轻量级的库,但不会减少您自己的代码。该Closure编译器会。所述闭合检查员也可以是有用的,因为有时精缩码具有比原始一个不同的行为,并且是疼痛调试。它与Firebug和支持单元测试集成在一起,这是当今开发人员最好的朋友。

文献资料

我猜想,与任何新的VS相对完善的库相比,它将缺乏jQuery所提供的大量扩展和教程。但是,在Google的推动下,应确保支持和可靠性都非常好。当前的文档教程看起来也都不错。

特征

不过,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),因此我猜想很快将可以将它们一起使用(如果还不是这样)。


5
详细而有意义的答案,谢谢。您能否解释一下对GWT的引用是什么意思?恐怕我不明白。
pestaa

1
我认为您还应该在“更多”部分中提及模板库(Soy)。服务器(Java)端和客户端都可以使用相同的模板文件。IMO的实现非常好。意味着我们只可以在AJAX查询中发送JSON而不是发送HTML-节省带宽。
Frank Krueger

1
我刚刚发现对封闭的批评,但也许这只是FUD:sitepoint.com/blogs/2009/11/12/...
nalply

7
评论不是FUD,感谢您的链接。批评的重点是javascript代码在任何地方都不是最佳的。这可能是有效的,但它遗漏了更大的意义。据我了解,Closure的目标是真正复杂的JS应用程序(按GMail的规模),这会带来一些后果-例如并非每行都是最优的,因为所有内容都不是由一个出色的编码人员编写的。但是相反,它可能会作为软件工程框架进一步扩展。
彼得·S·马格努森

3
@nalpy如评论所建议,本文并未提及该库具有可优化这些编码问题的编译器(而非压缩程序)。
2012年

30

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

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

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

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

例如,他们有一个事件来告知联机状态是否已更改。这样就可以判断系统是否在线。

他们具有使用诸如Google Gears之类的工具的javascript函数,并继续扩展了Java语言可以完成的工作。

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


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


20

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

关于Google关闭的最佳信息来源可能是项目讨论小组,Wiki,文档页面,演示以及Michael Bolin尚未完成的书,现在可以从野生动物园书籍网站上获取。

我可以立即告诉一件事-vs的学习曲线closure比较陡峭,jQuery但是由于库的庞大性,清晰的组织结构以及将其与编译器和模板工具一起使用的好处,因此值得一试。

closure库在这方面更像dojojQuery,和一些概念从借用dojo,根据迈克尔波林。

Google Closure编译器使用的是JSDoc文档系统,该系统同时(如果由程序员正确创建)提供文档,并可以在编译时捕获许多错误。

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

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

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

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

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

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


1
我一直在寻找其他东西,但最终还是到了这里,但是很高兴知道,like jQuery google closure allows traversing dom structure with the string-based queries using a dedicated component of the library.您可以将我链接到与此有关的一些文档吗?
IsmailS 2011年

@iSid:我相信他在谈论goog.dom.DomHelper,但是我个人没有看到与jQuery等效的查询功能。@Evgeny:您能给我们更多细节吗?
2012年

@iSid:该功能由goog.dom.query提供,该文件未进行记录,以及goog.dom命名空间的其余部分。
bkirkbri 2012年

8

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

...关闭规则!^ _ ^


4
与jQuery进行了点对点的比较:“ [...] jQuery确实工作得很好,并且可以毫不费力,快速地完成很多事情,因此Closure的“承诺”不是提供更好的算法,而是提供更好的算法,有组织和可维护的部署JavaScript应用程序的方式闭幕式编码意味着要牢记面向对象的原则,创建几个js文件,每个js文件代表一个类,将应用程序体系结构组织到包中,最后使用提供的工具进行部署,获得单一的,压缩,安全的JavaScript文件[...]”
亚历

7

也许我没有使用jQuery,但是我在那里没有看到真正的UI小部件集合(是的,是的,但是您不知道它们的测试程度如何,并且通常没有明显的赢家和/或缺少插件文档)。

除其他外,闭包还包含一个小部件集合(请参见“演示”选项卡),包括gmail中使用的无图像按钮

更一般而言,它在该发行版中实现了更多功能。这可能不是一件大事,但是当我在寻找诸如ajax历史记录模块或自动完成之类的简单内容时,我对jQuery插件之类的应用感到恼火。

总体而言,这是一个庞大的库+工具集,我将了解它的全部功能。


2
jqueryui.com是官方的ui小部件集合
Jourkey

1
是的,从该站点来看,它具有6
个小

3
我用过jQueryUI,我认为它非常弱。它甚至几乎没有在开发中。上次添加新小部件的时间是什么时候。它可能是官方的小部件集合,但是任何想要与jQuery一起使用的小部件的人最好还是搜索第三方jQuery小部件。
Nosredna

2
jQueryUI不仅是一组JavaScript小部件,而且还具有出色的CSS框架。对我而言,它是样式CRUD /管理页面的绝佳工具。再加上其中的许多“小部件”都是jQuery中的1-2个衬里,甚至不值得为其编写插件。
杰斯·瑞亚

2
JQuery的吸引力不是预制的小部件。它可以在创纪录的时间内制作自己的自定义小部件。我很少碰插件,包括UI。
埃里克·雷彭

1

我感谢Google在开源社区中所做的大部分贡献,并且我相信它有很多很棒的东西,但总的来说,我发现Closure体积庞大,使用过度并且不够雅致。如果您必须将所有内容都转换为Java,那么我想这是完全错误的。

编辑:

很公平。我没有真正比较。封闭就像一个巨大的仓库,里面有您可能希望把所有可能的工具放在某个地方。有点像.NET或庞大的Java库。找到所需的内容后,您会发现可以完成特定工作的特定特定内容。然后进行生产,您可以清除所有残留物。

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


1
我想了解更多有关Java版本的Closure的信息。您是否有此链接。谢谢
Yazz.com 2011年

查找“讽刺标签”。您将在此处找到答案。
埃里克·雷彭

0

Google Closure库允许您编译和优化JavaScript。它不是像jQuery这样的库。jQuery是一种为您提供功能的工具,可让您更快地编写自己的JavaScript。

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

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


6
那不是完全正确。Google Closures还带有自己的类似于jQuery的库,该库提供了编写您自己的代码的功能和实用程序:code.google.com/closure/library/docs/tutorial.html
Wookai,2009年

2
喔好吧!感谢您纠正我!
泰雷诺,

2
+1试图提供帮助:)
Andomar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.