2008-12-12 39 views
9

我正在考虑使用GWT作为现有 Web应用程序的前端。GWT与传统应用程序中的多个主机页面

我不能一气呵成证明一个完全重写,以100%的GWT。我很可能会逐渐将部分系统迁移到GWT。但为了一致性,我想从第一天开始使用GWT TabPanel,MenuBar等作为全局界面元素。

作为一个试验,看看系统的“遗留”部分如何被整合,我做了以下工作。

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

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

作为一个原型,这一切似乎完美并加载速度很快。 但是,看起来GWT应用程序确实是设计为从一个主机页面运行,而不是数百个动态生成的应用程序。

任何人都可以突出显示任何问题,上述做法可能会碰到,尤其是在尺寸上GWT模块增加?我的目标是保持传统的包装模块有意倾斜。其他功能将在单独的模块中实现。

怎么会有其他人GWT集成到他们的前端以渐进的方式?

回答

5

一个GWT设计中使用的方法是完全一样的,你已经用它。我们在许多应用程序中都这样做了 - 其中有一个GWT模块具有多个“部分”,根据给定的id是否存在于页面上进行加载。所以我没有看到你会有这样的问题。即使对于新的Web应用程序,我们也经常使用这种方法,我们只需要在页面上添加一些“小部件”,而不是在GWT中编写整个应用程序。

它不会产生巨大的差异,但我建议的一件事是不将GWT JavaScript代码放入主模板中,而只是放在需要它的页面上。确实,如果你不运行HTTPs,它基本上是永久缓存的,但如果在该页面上实际上并不需要,那么让人们加载模块似乎是错误的。这当然取决于人们如何使用你的网站,如果他们有可能下载它,那么它将不会有任何改变。

2

你这样做是正确的。避免避免避免试图通过将其分解为多个单独的应用程序来“尽量减少”GWT占用空间的诱惑。

GWT性能的关键是尽可能少地下载并确保它们被缓存。一次加载一个250k的bundle比两个200k的bundle好得多,因为随着事物的增长,压缩对大文件来说会变得更好,你真的开始获得好处。

y-slow &当谈到说服自己这个问题时,萤火虫确实很有用。你可以看看

一个性能技巧是在这里的样章可供选择:http://www.infoq.com/articles/progwt 这表明围绕装载GWT部件的小型建筑成任意数量的JavaScript中的变量槽和预填充数据。这允许您的GWT小部件加载并且不需要第二个HTTP GET来获取它们使用的数据。在实践中,我发现这是一个很好的性能提升。