十一月08,二千零九

谷歌关闭的故事:高级JavaScript工具

星期四, 谷歌吸引了世界各地的Web开发人员的眼球 公司转向开源它的闭包javascript编译器,网络社区的库和模板系统-与流行应用程序的驱动工具完全相同,包括 Gmail谷歌文件谷歌地图Google阅读器,毫无疑问还有很多其他的。闭包工具将Web代码优化为紧凑和高性能,基本上减少了页面加载和重绘时间,同时也实现了不妥协的功能。围绕着网络,你可以看到谷歌内部和外部的释放狂人,他们中的许多人在为山景科技巨头工作时曾使用过这些工具。

为了更好地理解这些工具,从现实世界的角度来看待封闭,我伸出手来 米哈伊·帕帕里塔,谷歌阅读器团队的工程师,听说他的经历。他很慷慨地向大家介绍了一个非常全面的情况,解释工具的来源和用例,通过电子邮件,其中大部分总结如下。

闭包编译器可以追溯到 Gmail于2004年4月发布.Paul Buchheit现在 脸谱网,通过 友谊饲料以前的谷歌,主要归功于Gmail的成立, 本周他在FriendFeed上强调了这一声明,称之为“gmail javascript编译器”。图书馆和模板系统是在几年后启动的。

随着谷歌阅读器开发于2005年初开始,和米哈伊一起, 谢伦克里斯·维瑟雷尔(后一对现在在 事物实验室在工作 布里兹,它还使用闭包)和其他工作来制作一流的基于Web的RSS阅读器,团队在最初的原型之后立即利用了关闭。当时,与现在相比,该团队对下载规模的关注较少,但是编译器的主动函数检查改进了错误检测。

米哈伊写道:
“直到2005年10月阅读器发布的最后一个月左右,编译器的大小优势不那么重要,因为我们不太关注下载时间(和总体性能),而更多关注基本功能的启动和运行。相反,编译器执行的额外检查(例如如果用错误的参数数目调用函数,变量名中的拼写错误)使得更容易更早地捕获错误。我们已经为阅读器设置了开发模式,这样当浏览器刷新时,JavaScript在服务器上重新编译,并在重新加载时与页面一起使用。这将导致一个紧密的开发循环,使尽早捕获javascript错误成为可能。”
由于图书馆和模板系统直到2006年才到达,读卡器在提供类似功能的地方使用了本地代码,包括处理不同的浏览器版本和怪癖,米哈伊说。但一旦他们有空,读卡器为新代码使用了新工具,后来,替换旧的共享库和本地代码。米海说,他进行了一次审计,以检测旧代码的使用情况,找到它们的闭合等价物,所以工作可以在所谓的“固定”期间分配给团队,当关注代码质量而不是新功能时。

关闭后,对谷歌阅读器用户的好处是显而易见的。米海估计如果不关闭,阅读器的javascript代码将是巨大的2兆字节,关闭后可减少到513千字节,一直到184千字节,几乎所有浏览器都支持。其他好处包括几乎消除了对浏览器差异化的关注,以及一个极易管理的大型JavaScript代码库“随着功能的老化和积累而不会失控”,他说。(音符 下载时间是罗伯特·斯科布尔离开阅读器的主要原因。团队最近还推动进一步优化代码)

闭幕词在读者中的作用,最初用于低级代码,已经“向上移动了UI堆栈”到了它被用于UI小部件的位置。米海说:“这意味着做自动完成的小部件并不是很多工作,菜单,按钮,对话,拖放,等。读者。”

通过硅谷和其他地方的开发人员都能明显感受到闭幕式的发布所带来的兴奋,正如你在博客上看到的那样。 埃里克·阿维德森,共同创造者 丹普皮乌斯,和A 系列 员额博林斯网站.其他激动的推特来自 迈克纳普,前述的 克里斯·维瑟雷尔库萨尔-戴夫.

正如米哈伊所说,“当你看到前谷歌为它的发布而欢呼时,你会发现它有一些特别之处。如果他们都被迫使用某个专有的过时系统,他们不会那么兴奋,因为它现在已经公开了。”

喜欢 谷歌的许多其他项目,闭包的编译器,库和模板仅衍生为20%的项目,并且在很大程度上仍然依赖于在所谓的20%的时间内在谷歌完成的工作。米海说,如果一个项目需要编译器或库中的特性,我们也鼓励他们为此作出贡献。
“举一个具体的例子,Mihai说,Reader有一些自行开发的代码,可以通过类名和标记名(一个更为严格和简化的灵活的基于CSS选择器的查询版本,您可以使用jquery或基于dojo的goog.dom.query)来定位元素。“作为“移植”到关闭库的过程的一部分,我们意识到尽管有一个等价的库函数,goog.dom.getElementsByTagnameandClass,类,它没有使用一些最新的浏览器API,因此速度更快(例如getelementsbyclassname和w3c选择器API)。因此,我们不仅将读卡器的代码转换为使用闭包版本,但我们也在其中加入了这些新的API调用。这最终使所有其他应用程序更快;很高兴收到丹·普修斯的消息,他说在一次普通的Gmail操作中,这一变化减少了明显的时间。”
现在很明显,除了简单的HTML和JavaScript,我还不是开发人员,但是当我看到好的网络应用程序时我知道,谷歌的网络应用(以及Brizzly)是世界上最好的。他们成功地利用了过去需要大量软件安装的东西,并使它们成为相对轻量的Web实例,在服务之间具有类似的功能。随着关闭的释放,Sharp Web开发人员将寻求利用这些JavaScript库和工具,使自己的产品成为同类产品中最好的——这将有利于整个Web。我很欣赏米海的开放,他愿意分享故事背后的故事。

无可奉告:

发表评论