使用 Google Web Toolkit 和 Eclipse Galileo 进行高性能 Web 开发
2009-12-13 00:00:00 来源:WEB开发网目前为止,我们检查的所有优化都是 GWT 编译器所做的语言级别的优化。GWT 还可以执行其他特定于浏览器的优化。这些类型的优化通常属于延迟绑定(deferred binding)的范畴。
延迟绑定
自从 Mosaic 不再是惟一的浏览器之后,Web 开发人员一直受到各种 Web 浏览器的变体的困扰。众多 JavaScript 框架的一大吸引力在于能够减小不同浏览器之间的差异,从而使您的工作更轻松。这个问题有两种解决方法。第一种方法是编写可以在不同浏览器之间移植的代码。这是一种最小公分母方法(least-common denominator),因为它在最好的情况下也不够理想,通常情况下,它远远不能达到最佳效果。另一种方法是先探测每个浏览器的特性,然后使用针对它们的优化代码。这导致了许多所谓的 “意大利面条式代码(spaghetti code)”,意味着许多从未在浏览器上执行过的代码被附带到浏览器。
GWT 的延迟绑定架构允许它针对各种浏览器编译多个版本的 JavaScript。一小段 JavaScript 被先下载到浏览器,对浏览器特性进行探测,然后再下载经过优化的 JavaScript。如果您回顾一下图 2,您将注意到下载了一个 .nocache.js 文件。这就是那个浏览器探测代码,在本例中,它的大小为 4KB。默认情况下,可以检查 4 种浏览器:Opera,Safari,Gecko(Firefox V2 或更低版本)和 Gecko V1.8 (Firefox V3+) 以及 Internet Explorer V6 和 Internet Explorer V8。
演示 API 在不同浏览器之间差别很大的一个经典例子就是设置一个元素的 innerText 属性。这是在服务器远程过程调用的回调处理器中的 starter 项目中完成。其 Java 代码非常简单,如清单 15 所示。
清单 15. 在 GWT 中设置文本public void onSuccess(String result) {
dialogBox.setText("Remote Procedure Call");
serverResponseLabel.removeStyleName("serverResponseLabelError");
serverResponseLabel.setHTML(result);
dialogBox.center();
closeButton.setFocus(true);
}
更多精彩
赞助商链接