Google的开源JavaScript开发工具:Closure Tools

标签:Google, JavaScript

Google刚开源了其内部使用的JavaScript开发工具:Closure Tools(直译是闭包工具集),目前仍躺在Google Labs里。

从项目主页的介绍可以看到,Closure Tools包含3个组件:
  1. Closure Compiler:这是个JavaScript优化器,可以将JavaScript编译成压缩的、高性能代码。它除了能移除无效代码,重写代码使其最小化且运行更快,还能检查语法、变量引用和类型,并对一些常见JavaScript错误提出警告。同时,它还提供了Closure Inspector(一个Firefox插件)用于调试编译后的代码。
  2. Closure Library:这是个广泛的、经过良好测试、模块化且跨浏览器的JavaScript库。在例子中可以看到,Google Docs就是用这个库写的。
  3. Closure Templates:这是一个为Java和JavaScript实现的模板系统,可在服务器和客户端使用相同的模板。值得一提的是,JavaScript模板会进行预编译处理,以提高其性能。此外,Gmail和Google Docs也是使用该模板系统。

试用了一下,稍微说下我对这3个工具的看法:

Closure Compiler对代码的性能优化可能没什么用,我测试了一段自己写的代码,速度反而略微下降了(约4%)。
不过压缩效果很不错,为原文件的36.07%,packer为55.97%,YUI Compressor 2.4.2为47.17%。

Closure Library得从3方面来说。
它提供了一些机制,例如依赖管理、继承、事件处理、DOM操作。其中依赖管理是我未曾在其他库里看到的,对模块化非常有用;而Prototype和MooTools的继承非常不错,似乎Closure Library没有优势;事件处理和DOM操作的接口几乎没什么有效的封装,我更喜欢jQuery的简洁。
另一方面,它还提供了不少API,例如URL解析、同步/延迟调用、调试工具、国际化、科学计算、拼写检查、AJAX等繁多的功能,这有点像YUI和MooTools。开发时不一定会用到,但提供了总比没有好;不过我比较习惯jQuery的做法,只保证最基本和通用的功能,不让初学者感到困惑,却又能感受到它的强大。
此外不得不提它的UI,目前共提供了138个类,是Closure Library中最庞大的模块。除了Component以外,还有一些editor之类的辅助类。当然,jQuery的插件并不逊于它,Ext JS也足够好用。
总体上来说,学习它的成本可能比较高,如果已经熟练掌握了jQuery之类的用法,那么似乎没必要迁移到Closure Library。

Closure Templates分为Java和JavaScript这2种,共用同一套模板语言,但JavaScript模板需要先编译成js文件来调用。
对于Java程序员可能比较有用(其实JSP也不错),但习惯Python的就没必要强求了,毕竟Python的模板系统实在太多了。而JavaScript模板也有jstenjin之类的可以用用,只是我暂时还不清楚客户端模板除了国际化之外,还有什么必要。

0条评论 你不来一发么↓

    想说点什么呢?