考虑以下因素:
- 商业背景
- 社区支持
- 可用扩展
- 默认功能集
- 易用性
- 以及可靠性
你为什么更喜欢一个而不是另一个?
考虑以下因素:
你为什么更喜欢一个而不是另一个?
我会尽力提供我的信息。
据我了解,Google Closure 不仅仅是另一个 JS 库,它也是一组工具,可以让您优化JS代码。使用 jQuery 提供了很好的工具和轻量级库,但它不会压缩您自己的代码。而Closure 编译器则会。同时,closure 检查器有时也很有用,因为压缩后的代码与原始代码的行为可能不同,并且很难调试。它与Firebug集成,支持单元测试,这两者现在都是开发人员最好的朋友。
我认为与已经成熟稳定的 jQuery 相比,Closure 可能缺乏大量扩展和教程的可用性。但是,由 Google 推动应该能够确保其支持和可靠性都相当不错。当前的文档和教程也非常不错。
Closure 的特点看起来还不错,而且它的模块化架构也很有前途。我想 Google 已经在内部使用它很长时间了,这意味着您可以期望实现所有基本功能(以及更多功能),并且可能是以非常优化和可扩展的方式进行的。他们试图将其呈现为 JavaScript 的 STL,因此他们应该已经完善了它。
仔细研究这些功能后,看起来与现有库(如jQuery)相比,这可能是网络应用程序开发的一步进步。它对Google内部开发有好处,但像检测在线状态(参见goog.events.OnlineHandler)、在浏览器历史中轻松集成AJAX请求和JS操作(参见goog.History),或它们提供的众多出色小组件(参见goog.ui package)可能会帮助我们所有人构建更加出色的Web应用!
它配备了模板功能,可以与Java集成(谁说GWT?),因此这也可能是Closure的另一个优点。
最后,它看起来非常容易使用。语法可能比短的$ jQuery函数要冗长一些,但通过诸如IDE和自动完成之类的工具,这并不是真正的问题。此外,我认为我们可以期待来自Google的IDE(如Eclipse)的很好集成。
编辑:根据要求,让我简单介绍一下GWT参考。 Google Web Toolkit是一个Java库,允许创建AJAX启用的Web界面,并生成(和优化)所需的JavaScript代码。由于Google Closure允许创建可在客户端和服务器端(使用JavaScript和Java)使用的模板,我的猜测是很快就可以同时使用它们(如果还没有这样做)。
在我对这个API的简短了解中,我发现jQuery和Closure之间的差异非常明显。
jQuery基本上只是以跨浏览器的方式简化了许多常见操作的方法。
Closure是一个很新的框架,它提供了一种跨浏览器使用<canvas>
标签的方式,并添加了新的事件。
因此,它扩展了我们通常使用javascript所做的事情,将许多人们想要执行的操作放入API中。
例如,他们有一个用于检查在线状态是否改变的事件。以此可以判断系统是否在线。
他们还有使用Google Gears等工具的javascript函数,这延续了他们已经拓展了javascript能做的事情的事实。
需要我几天来消化所有的更改,但我可以看出这可能会对可以开发的Web应用程序产生重大影响。
编辑:请观看这个YouTube视频,它可能更好地回答了一些有关Google Closure的问题。
关于google closure 最好的信息来源可能是项目 discussion group、 wiki、doc页面、演示以及一本尚未完成的Michael Bolin所写的书,该书现在可以从safari books网站上获得。
有一件事我能立刻告诉你 - 相对于jQuery,closure
的学习曲线更加陡峭,但由于库的广泛性、清晰的组织以及与编译器和模板工具一起使用的好处,这可能是值得的。
在这方面,closure
库更像是dojo
而不是jQuery
,根据Michael Bolin所说的,一些概念是从dojo
中借鉴来的。
谷歌闭包编译器使用JSDoc
文档系统,如果由程序员正确创建,则同时提供文档和编译时检测错误的功能。
虽然函数名称比jQuery
更冗长,但编译器会缩小代码(使用各种优化策略),类型检查将节省大量调试代码的时间,因此键入较长的名称可能不是问题。同时,较长的名称增加了可读性。
库支持在怪异模式下运行的浏览器,以便通过“quirky” HTML嵌入其他站点的脚本。
库与一个称为soy
的JavaScript模板系统一起工作(但不依赖于它),该系统简化了文档中的内容填充。
像jQuery
一样,Google closure
允许使用专用组件通过基于字符串的查询遍历DOM结构。
闭包
库更像Java
,依赖于点分隔的命名空间 - 这是一个非常强大的组织特性。
在未编译的代码中使用这样的命名空间会产生开销,但在编译后的代码中,这些东西将被替换为短变量名。
像jQuery一样,Google Closure也允许使用专门的库组件通过基于字符串的查询遍历DOM结构。
你能否给我提供相关文档的链接? - IsmailS我刚刚在 insideRIA 上发布了一篇关于Google Closure的详细文章,回答了这个问题。
......Closure非常棒!^_^
我很欣赏谷歌对开源社区做出的大部分贡献,我相信它有一些很酷的东西,但总体而言,我觉得Closure过于臃肿、过度设计和不优雅。如果你必须把所有东西都转化为Java,那么Closure当然是非常棒的。
编辑:
说得对。我没有真正进行比较。Closure就像一个巨大的仓库,里面有你可能需要的每种工具...某个地方。有点像.NET或者一个庞大的Java库。一旦你找到了需要的东西,你就可以找到高度特定的东西来完成高度特定的工作。然后在生产中,你可以删除所有的垃圾。
另一方面,JQuery更像是一个易于修改的声波螺旋手枪。