Google Closure Library提供的jQuery是什么?
考虑到
- 商业背景
- 社区支持
- 可用的扩展
- 默认的function集
- 简单的使用
- 和可靠性
你为什么比另一个更喜欢一个?
我会尝试添加我的信息。
超过另一个JS库
据我了解,Google Closure不仅是另一个JS库,而且它也是一套工具,可以让你优化你的JS代码。 使用jQuery为您提供了很好的工具和一个轻量级的库,但是并没有缩小您自己的代码。 Closure编译器将会。 封闭检查器也可能是有用的,因为有时缩小的代码与原始代码有不同的行为,并且是一个debugging的痛苦。 它集成了Firebug和支持unit testing,现在都是开发人员最好的朋友。
文档
我想,就像任何一个新的库VS一个完善的,它将缺乏jQuery的扩展和教程吨的可用性。 但是,被Google推动应该确保支持和可靠性都会很好。 目前的文档和教程看起来都非常好。
特征
Closure的特点看起来不错,但是它的模块化架构也很有前途。 我猜Google长期以来一直在内部使用它,这意味着您可以期待所有的基本特性(以及更多)被实现,并且可能以非常优化和可扩展的方式。 他们正试图将其作为JavaScript的STL来呈现,所以他们应该抛弃它。
在仔细观察这些特性之后,看起来这可能是将Web应用程序开发与现有库作为jQuery相比向前迈出的一步。 它猜测它有利于Google的内部发展,但是可以检测到在线状态(请参阅goog.events.OnlineHandler ),在浏览器历史logging中轻松整合AJAX请求和JS操作(请参阅goog.History ),或者一些优秀的小部件他们提供的(请参阅goog.ui包 )可能会帮助我们所有人构build更加棒的web应用程序 ;)!
它带有与Java集成的模板特性 (谁说GWT ?),所以这也可能是Closure的另外一个优点。
使用方便
最后,它看起来很简单的使用。 这个语法可能比简短的$ jQuery函数有点冗长,但是对于IDE和自动完成,这不是一个真正的问题。 而且,我会说我们可以期待在Eclipse这样的IDE中很好地集成来自Google的IDE。
编辑:根据要求,让我谈谈关于GWT的参考。 Google Web Toolkit是一个Java库,允许创build支持AJAX的Web界面,并生成(并优化)所需的JavaScript代码。 由于Google Closure允许创build既可以在客户端也可以在服务器端使用的模板(使用JavaScript和Java),我的猜测是很快就可以联合使用它们(如果还不是这样的话)。
在我简短的API看来,我发现jQuery和Closure之间的区别是惊人的。
jQuery基本上只是一个简单的方法来以跨浏览器的方式执行许多频繁的操作。
Closure是一个非常新的框架,例如,它提供了一个跨浏览器的方式来使用<canvas>
标签,并添加了新的事件。
所以,这就增加了我们通常用javascript所做的工作,他们正在采取许多人们想要做的操作并将其放入API中。
例如,他们有一个事件来判断在线状态是否已经改变。 所以你可以知道系统是否在线。
他们有JavaScriptfunction,使用诸如Google Gears之类的工具,继续扩展Javascript的function。
消化所有这些变化需要花费我几天的时间,但是我可以看到这可能会对可开发的Web应用程序产生重大影响。
Closure Library的最大优点是它是为Closure Compilerdevise的。 这为JavaScript开发提供了全新的可能性。
编译器有几个很酷的function:
- 它将可读的JavaScript编译成压缩的机器可读的JavaScript – 它在“高级”模式下具有最好的压缩比 。
- 使用JSDoc标签编写代码的文档很重要:编译器读取它,在编译文档中的拼写错误,错误使用@constructor,错误types的variables ,滥用@private和@protected注释的字段时,等等
- 如果您编写可重用的JavaScript库(如OpenLayers或Google Maps),则可以正式导出公共API,编译器将优化您的内部代码。
- 最终的应用程序可以与库一起编译 – 然后将库中未使用的部分从生成的代码中移除。 编译器自动解决依赖关系。
- 编译器接受常量来删除不需要的function – 这只允许编译特定的浏览器,如Mobile WebKit,仅适用于Quirks模式或严格模式之一,不支持IE6的编译等。
- 即使是源代码的编译版本,也可以使用FireBug进行debugging。
- 编译器支持生成可dynamic加载的模块,这可以大大加快加载最终应用程序的速度,因为高级function的代码只有在需要时才能加载。
有关详情,请参阅: http : //blog.klokantech.com/2010/12/closure-compiler-for-openlayers-3x.html
编辑 :看看这个YouTubevideo,它可以更好地回答一些关于Google Closure的问题。
可能关于谷歌closures的最佳信息来源是项目讨论组 ,wiki,doc页面,演示,还有尚未完成的Michael Bolin的书,现在可从Safari浏览器书籍站点获得。
有一件事我可以立即告诉 – 关于vs jQuery
有一个更陡峭的学习曲线,但它可能是值得的,由于图书馆的浩瀚,明确的组织和与编译器和模板工具一起使用它的好处。
在这方面closure
库比jQuery
更像dojo
,根据Michael Bolin的说法,一些概念是从dojo
中借用的。
谷歌封闭编译器使用JSDoc
文档系统,同时(如果由程序员正确创build)提供文档,并使编译时捕获许多错误。
虽然函数名比jQuery
更冗长,但编译器会缩小代码(使用各种优化策略),types检查将节省大量时间debugging代码,所以,input较长名称的时间可能不是问题。 同时,更长的名字增加了可读性。
库支持以怪癖模式运行的浏览器,以便其他站点可以使用“quirky”htmlembedded脚本
图书馆与(但不依赖)称为soy
的JavaScript模板系统工作,简化了与内容填充文件。
像jQuery
谷歌closure
允许遍历dom结构与基于string的查询使用库的专用组件。
closure
库依赖于更像Java
点分隔的命名空间 – 一个非常强大的组织特征。
使用这样的名字空间会导致未编译代码的开销,但是在编译的代码中,这些东西被replace为短variables名称。
我刚刚发布了一篇关于Google Closure的非常详尽的文章,它在insideRIA上回答了这个问题。
closures规则! ^ _ ^
也许我没有得到jQuery,但我还没有看到一个真正的UI小部件集合(有插件,是的,但你永远不知道他们是如何得到很好的testing,往往没有明确的赢家和/或插件缺乏文档)。
除此之外,closures还有一个小部件集合 (请参阅“演示”选项卡),其中包括gmail中使用的无图像button 。
更一般地说,它具有更多的function,作为发布的一部分。 这可能不是什么大事,但是当我正在寻找像ajax历史模块或自动完成这样简单的东西时,我感到非常恼火。
总的来说,这是一个庞大的图书馆和一套工具,我只是为了了解什么是可用的而熟悉它。
Google Closure库允许您编译和优化您的JavaScript。 这不是像jQuery一样的库。 jQuery是为您提供的function,使您可以更快地编写自己的JavaScript。
谷歌closures将帮助您使自己的JavaScript代码最小化,以便通过互联网更快的交付。
长话短说,Google Closure是一个工具,而jQuery是一个类似于Prototype的库。
我很欣赏Google对开源社区的大部分贡献,我确信它有一些很酷的东西,但总体来说,我发现Closure笨重,过度,不雅。 如果你必须把所有的东西都变成Java,那么我认为它是非常好的。
编辑:
很公平。 我没有真正比较。 closures就像一个巨大的仓库,每一个可能的工具,你可能想要位于…某处。 有点像.NET或大规模的Java库。 一旦你find你需要的东西,你可以find非常具体的东西,做高度特定的工作。 然后对于生产你可以删除所有的cruft。
另一方面,JQuery更多的是一个容易修改的音速螺丝刀。