考虑到
商业背景
社区支持
可用的扩展
默认的一组功能
使用简单
和可靠性
为什么你喜欢一个而不是另一个?
我会尝试添加我的信息.
据我了解,Google Closure不仅是另一个JS库,而且它也是一组允许您优化JS代码的工具.使用jQuery为您提供了很好的工具和轻量级的库,但它并没有缩小您自己的代码.该Closure编译器会.所述闭合检查员也可以是有用的,因为有时精缩码具有比原始一个不同的行为,并且是疼痛调试.它集成了Firebug和支持单元测试,这些测试都是开发人员现在最好的朋友.
我想,随着任何一个新的库VS一个成熟的库,它将缺乏jQuery的大量扩展和教程的可用性.然而,被Google推动应该确保支持和可靠性都非常好.目前的文档和教程看起来都非常好.
但是Closure的功能看起来不错,其模块化架构也很有前途.我猜Google已经在内部使用了很长时间,这意味着您可以期望实现所有基本功能(以及更多),并且可能以非常优化和可扩展的方式实现.他们试图将它作为JavaScript的STL呈现,所以他们应该对它进行优化.
在仔细研究这些功能之后,与现有的jQuery库相比,这似乎是Web应用程序开发的一个进步.它认为它有利于谷歌的内部发展,但有一些事情,比如检测在线状态(参见goog.events.OnlineHandler),在浏览器历史记录中轻松集成AJAX请求和JS操作(请参阅goog.History),或大量小部件他们提供(参见goog.ui包)可以帮助我们所有人构建更加精彩的webapps;)!
它带有与Java集成的模板功能(谁说GWT?),所以这也可能是Closure的另一个好处.
最后,它看起来很简单.语法可能比短$ jQuery函数更冗长,但是对于IDE和自动完成,它不是一个真正的问题.而且,我认为我们可以期待在像Eclipse这样来自Google的IDE中进行良好的集成.
编辑:根据要求,让我谈谈GWT参考.Google Web Toolkit是一个Java库,允许创建支持AJAX的Web界面,并生成(并优化)所需的JavaScript代码.由于Google Closure允许创建可以在客户端和服务器端使用的模板(使用JavaScript和Java),我的猜测是很快就可以联合使用它们(如果不是这样的话).
在我简要介绍API的过程中,我发现jQuery和Closure之间的区别非常明显.
jQuery基本上只是一种以跨浏览器方式进行许多频繁操作的简化方法.
Closure是一个非常新的框架,因为它们提供了一种跨浏览器的方式来使用标记,例如,它们添加了新的事件.
因此,这增加了我们通常使用javascript做的事情,他们正在进行许多人们想要做的操作并将它们放入API中.
例如,他们有一个事件来判断在线状态是否已经改变.因此,您可以判断系统是否在线.
它们具有使用Google Gears等工具的javascript函数,这些函数继续使用Javascript可以扩展的功能.
我需要花费几天时间来消化所有更改,但我可以看到这可能对可以开发的Web应用程序产生重大影响.
Closure Library的最大优点是专为Closure Compiler设计.这为JavaScript开发开启了全新的可能性......
编译器有几个很酷的功能:
它将可读的JavaScript编译成压缩的机器可读JavaScript - 它在"高级"模式下具有最佳压缩率.
与JSDoc标签代码的文档是很重要的:编译器读取它,你编译在文档中的拼写错误得到警告,错误使用@constructor的,错误变量的类型,字段的滥用标注有@private和@protected,等等
如果您编写可重用的JavaScript库(例如OpenLayers或Google Maps),则可以正式导出公共API - 编译器会优化您的内部代码.
最终应用程序可以与库一起编译 - 然后从生成的代码中删除库的未使用部分.依赖关系由编译器自动解决.
编译器接受常量来删除不需要的功能 - 这允许仅针对特定浏览器(如Mobile WebKit)进行编译,仅针对Quirks模式或严格模式之一进行编译,不支持IE6编译等.
即使对于源代码的编译版本,也可以使用FireBug进行调试.
编译器支持生成可动态加载的模块,这可以显着加快最终应用程序的加载速度,因为只有在需要时才能加载高级功能的代码.
详情请看:http: //blog.klokantech.com/2010/12/closure-compiler-for-openlayers-3x.html
编辑:看一下这个youtube视频,它可以更好地回答一些关于Google Closure的问题.
关于谷歌关闭的最佳信息来源可能是项目讨论组,维基,文档页面,演示以及Michael Bolin尚未完成的书籍,现在可从safari书籍网站获得.
我可以立刻告诉他一件事 - 对于closure
vs 有一个更陡峭的学习曲线,jQuery
但由于图书馆的广阔性,清晰的组织以及与编译器和模板工具一起使用它的好处,它可能是值得的.
closure
根据迈克尔·博林的说法,这方面的图书馆更像dojo
是jQuery
,并且借鉴了一些概念dojo
.
谷歌闭包编译器使用JSDoc
文档系统,它同时(如果程序员正确创建)提供文档并在编译时捕获许多错误.
虽然函数名称比jQuery
's 更冗长,但编译器会缩小代码(使用各种优化策略),类型检查将节省相当多的时间来调试代码,因此输入较长名称的时间可能不是问题.同时更长的名称增加了可读性.
库支持以怪异模式运行的浏览器,以便其他站点可以使用"quirky"html嵌入脚本
库使用(但不依赖于)一个调用的javascript模板系统soy
,简化了用内容填充文档.
像jQuery
google closure
允许使用库的专用组件遍历基于字符串的查询的dom结构.
closure
库更依赖于点分隔的命名空间Java
- 一个非常强大的组织功能.
使用这样的命名空间会在未编译的代码中产生开销,但在编译的代码中,这些东西会被短变量名替换.
我刚刚发布了一篇关于Google Closure的非常详尽的文章,它在insideRIA上回答了这个问题.
......关闭规则!^ _ ^
也许我没有得到jQuery,但我还没有看到真正的UI小部件集合(有插件,是的,但你永远不知道他们是多么经过测试,而且通常没有明显的赢家和/或插件缺乏文档).
Closure除其他外还有一个小部件集合(参见演示选项卡),包括gmail中使用的无图像按钮.
更一般地说,它作为发布的一部分实现了更多功能.它可能不是一件大事,但当我正在寻找像ajax历史模块或自动完成这样简单的东西时,我对jQuery插件的海洋感到恼火.
总的来说,这是一个庞大的图书馆+工具集,我会熟悉它只是为了知道什么是可用的.