Google 闭包库比 jQuery 提供了什么?

考虑到

  • 商业背景
  • 社区支持
  • 可用的分机
  • 默认特性集
  • 简单易用
  • 和可靠性

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

56806 次浏览

我会尽量补充我的信息。

比另一个 JS 自由党还多

据我所知,Google Closure 不仅是另一个 JS 库,而且是一组允许您优化 JS 代码的工具。使用 jQuery 可以提供很好的工具和轻量级库,但它不会缩小您自己的代码。闭包编译器会的。封闭检查员也可能很有用,因为有时缩小的代码与原始代码有不同的行为,而且调试起来很麻烦。它集成了 纵火犯和支持单元测试,这两者都是当今开发人员最好的朋友。

文件

我猜想任何一个新的库与一个已经建立的库相比,它都缺乏 jQuery 所拥有的大量扩展和教程。不过,在谷歌的推动下,支持和可靠性应该都会相当不错。目前的 文件教程看起来都很不错。

特征

然而,Closure 的特性看起来还不错,它的模块化架构也很有前途。我猜 Google 已经在内部使用它很长一段时间了,这意味着你可以期待所有的基本功能(甚至更多)都可以实现,而且可能是以一种非常优化和可扩展的方式。他们试图将其表示为 JavaScript 的 STL,因此他们应该对其进行优化。

在更仔细地研究了这些特性之后,与现有的 jQuery 库相比,这似乎是 Web 应用程序开发的一个进步。它可能有利于 Google 的内部发展,但是像检测在线状态(参见 Goog.events OnlineHandler) ,在浏览器历史中容易地集成 AJAX 请求和 JS 操作(参见 很好,历史) ,或者他们提供的大量伟大的小工具(参见 Goog.ui 软件包)可能会帮助我们所有人构建更棒的网络应用程序;!

它附带了与 Java 集成的 模板功能(谁说是 GWT了?)因此,这也可能是另一个加上闭幕。

易于使用

最后,它看起来非常容易使用。语法可能比简短的 $jQuery 函数稍微冗长一些,但是对于 IDE 和自动完成,这不是一个真正的问题。此外,我认为我们可以期待像 Eclipse 这样的 IDE 的良好集成来自 Google。

编辑: 按照要求,让我就 GWT 参考说几句话。Google Web Toolkit 是一个允许创建支持 Ajax 的 web 接口的 Java 库,它可以生成(并优化)所需的 JavaScript 代码。由于 Google Closure 允许创建既可以用于客户端又可以用于服务器端的模板(使用 JavaScript 和 Java) ,我猜测很快就可以联合使用它们(如果还没有这种情况的话)。

Google 闭包库允许您编译和优化 JavaScript。它不像 jQuery 那样是一个库。JQuery 为您提供了一些函数,这些函数允许您更快地编写自己的 javascript。

GoogleClosure 将帮助您最小化自己的 javascript 代码,以便在互联网上更快地交付。

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

也许我没有得到 jQuery,但我还没有看到一个真正的 UI widgets 集合(有插件,是的,但你永远不知道他们是如何测试良好,往往没有明确的赢家和/或插件缺乏文档)。

Closure 除了其他功能之外,还有 小部件收藏(参见 demos 选项卡) ,比如说,包括在 gmail 中使用的 没有图像的按钮

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

总的来说,它是一个庞大的库 + 工具集,我将逐渐熟悉它,只是为了了解可用的工具。

在我对 API 的简要介绍中,我发现 jQuery 和 Closure 之间的差异是惊人的。

JQuery 基本上只是一种简化的方法,用于以跨浏览器的方式执行许多频繁的操作。

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

所以,这增加了我们通常使用 javascript 所做的事情,它们采用了许多人们想要做的操作,并将它们放入 API 中。

例如,它们有一个事件来告诉联机状态是否已更改。这样你就能知道系统是否在线。

它们有使用诸如 Google Gears 这样的工具的 Javascript 函数,它们扩展了 Javascript 的功能。

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

我刚刚发布了一篇非常详尽的关于 Google Closure 的文章,在 在 RIA 内部上回答了这个问题。

... 关闭规则! ^ _ ^

编辑 : 看看 这个 Youtube 视频,它可能会更好地回答一些关于 Google Closure 的问题。

也许最好的信息来源的谷歌关闭是项目 讨论小组,维基,文档页面,演示和尚未完成的 作者: Michael Bolin,现在可从 Safari 图书网站。

有一件事我可以马上告诉你-有一个更陡峭的学习曲线为 closurejQuery,但它可能是值得的,因为这个库的巨大,清晰的组织和好处,使用它与编译器和模板工具一起使用。

在这方面,closure文库更像 dojo而不是 jQuery,而且一些概念是从 dojo中借用的,迈克尔 · 博林说。

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

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

库支持以离奇模式运行的浏览器,这样其他站点就可以使用“离奇”html 嵌入脚本

程序库使用(但不依赖)名为 soy的 javascript 模板系统,该系统简化了用内容填充文档的过程。

jQuery谷歌 closure允许遍历结构与字符串为基础的查询使用专用组件的库。

closure库依赖于更像 Java的点分隔名称空间——这是一个非常强大的组织特性。

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

我很欣赏 Google 对开源社区的大部分贡献,我确信它有一些很酷的东西,但总的来说,我发现 Closure 体积庞大,过度紧张,而且不够优雅。如果你一定要把所有东西都变成 Java 的话,我想它绝对是非常漂亮的。

编辑:

好吧。我真的没有比较。关闭就像一个巨大的仓库,里面有你想要的所有可能的工具,在某个地方。有点像。NET 或者大规模的 Java 库。一旦你找到你需要的东西,你就可以找到高度特殊的东西,做高度特殊的工作。然后为了生产,你可以去除所有的凹凸不平。

另一方面,jQuery 是一个更容易修改的音速螺丝起。

闭包库的最大优点是为闭包编译器设计的。这为 JavaScript 开发打开了全新的可能性... ..。

编译器有几个很酷的特性:

  • 它将可读的 JavaScript 编译为 机器可读的压缩文件 JavaScript-它具有“高级”模式的 最好的压缩比
  • 代码文档 使用 JSDoc 标记是非常重要的: 编译器读取它,然后得到 在编译错误时发出警告 在文档中,错误地使用 @ structor,wrong < strong > type of a 变量 ,误用带注释的字段 有“私人”和“保护”等等。
  • 如果您编写一个可重用的 JavaScript 例如 OpenLayers 或 GoogleMaps, 正式导出您的公共 API-和 编译器优化你的内部 密码。
  • 最终的应用程序可以是 与库一起编译- 然后是未使用的部分 库从生成的 代码,解决了依赖关系 由编译器自动执行。
  • 编译器接受要删除的常数 不需要的功能-这允许 只为特定目的而编制 浏览器,例如 MobileWebKit 只有一个怪癖模式或严格 模式,编译不支持 IE6等。
  • 使用 FireBug 进行调试是 即使对于已编译的 源代码的版本。
  • 编译器支持动态生成 可加载的模块,这些模块可以 显著加快负荷 结束应用程序,因为 可以加载高级功能 只有在需要的时候。

详情请看: Http://blog.klokantech.com/2010/12/closure-compiler-for-openlayers-3x.html