9

我正在考虑使用 GWT 作为现有Web 应用程序的前端。

我不能证明一次完全重写为 100% GWT 是合理的。我很可能会逐渐将部分系统迁移到 GWT。但是为了保持一致性,我想从第一天起就使用 GWT TabPanel、MenuBar 等作为全局界面元素。

作为一个实验,看看如何合并系统的“遗留”部分,我做了以下事情。

应用程序的主页模板现在在每个页面上加载一个小的“包装器”GWT 模块。此 GWT 模块在动态生成的主机页面中查找选择的 DIV。如果找到了 DIV,则将合适的小部件插入适当的位置,即 menuBar、tabPanel。

包含的小部件的许多配置也可以作为 JSON 结构插入到主机页面中。例如,我实现了一个以这种方式动态设置 TabPanel 的适配器。我还添加了一些非常简单的小部件来加载远程 HTML 等。

作为原型,这一切似乎都可以完美运行并且加载速度很快。然而,GWT 应用程序似乎真的被设计为从单个主机页面运行,而不是数百个动态生成的页面。

任何人都可以强调上述方法可能遇到的任何问题,特别是随着 GWT 模块大小的增加?我的目标是有意保持遗留包装器模块的精简。其他功能将在单独的模块中实现。

其他人是如何逐渐将 GWT 集成到他们的前端的?

4

2 回答 2

5

GWT 的设计使用方式之一就是您使用它的方式。我们已经在我们的许多应用程序中做到了这一点——其中有一个 GWT 模块具有多个“部分”,这些“部分”基于给定的 id 是否存在于页面上而被加载。所以我认为你不会有任何问题。即使对于新的 Web 应用程序,我们也经常使用这种方法,我们只需要页面上的一些“小部件”,而不是在 GWT 中编码整个应用程序。

它不会有很大的不同,但我建议的一件事是不要将 GWT javascript 代码放入您的主模板中,而只是将其放在需要它的页面上。确实,如果您不运行 HTTPS,它基本上会被永久缓存,但如果该页面上实际上不需要它,让人们加载模块似乎是错误的。这当然取决于人们如何使用您的网站,如果他们无论如何都可能下载它,那么它不会有任何区别。

于 2008-12-13T00:49:24.600 回答
2

你做对了。避免避免通过将 GWT 拆分为多个单独的应用程序来尝试“最小化”GWT 占用空间的诱惑。

GWT 性能的关键是尽可能少的下载并确保它们被缓存。加载一次 250k 的捆绑包比加载两个 200k 的捆绑包要好得多,而且因为压缩会随着文件的增大而变得更好,随着事情的增长,您确实开始获得好处。

在说服自己这一点时,y-slow 和 firebug 真的很有帮助。

您可以在此处的示例章节中查看一个性能技巧:http: //www.infoq.com/articles/progwt 它显示了一个迷你架构,围绕将 GWT 小部件加载到任意数量的插槽并在 JavaScript 中预填充数据变量。这允许您的 GWT 小部件加载,而不需要第二个 HTTP GET 来获取它们使用的数据。在实践中,我发现这是一个很好的性能提升。

于 2009-04-27T15:17:05.370 回答