热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

遗留应用程序中具有多个主机页面的GWT-GWTwithmultiplehostpagesinalegacyapplication

IamconsideringmakinguseofGWTasthefront-endtoanexistingwebapplication.我正在考虑使用GWT作为现有We

I am considering making use of GWT as the front-end to an existing web application.

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

I can't justify a complete rewrite to 100% GWT in one go. It is likely that I would migrate parts of the system to GWT gradually. However for consistency I would like to make use of the GWT TabPanel, MenuBar, etc as global interface elements from day one.

我无法一次性完全重写为100%GWT。我很可能会逐渐将部分系统迁移到GWT。但是为了保持一致性,我想从第一天开始使用GWT TabPanel,MenuBar等作为全局界面元素。

As an experiment to see how 'legacy' parts of the system could be incorporated, I have done the following.

作为一个实验,看看系统的“遗留”部分是如何被纳入的,我做了以下几点。

The application's main page template now loads a small 'wrapper' GWT module on every page. This GWT module looks for a selection of DIVs in the dynamically generated host page. If the DIV is found, a suitable widget is slotted into place, i.e. menuBar, tabPanel.

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

A lot of the configuration for the included widgets can also be slotted into the host page as JSON structures. For instance, I have implemented an adapter that dynamically sets up a TabPanel in this way. I've also added some very simple widgets that load remote HTML, etc.

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

As a prototype, this all appears to work perfectly and loads quickly. However, it seems that GWT apps are really designed to be run from a single host page, not hundreds of dynamically generated ones.

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

Can anyone highlight any issues that the above approach may run into, particularly as the GWT module increases in size? I would aim to keep the legacy wrapper module intentionally lean. Other functionality would be implemented in separate modules.

任何人都可以强调上述方法可能遇到的任何问题,特别是当GWT模块的大小增加时?我的目标是保持传统的包装模块有意识地倾斜。其他功能将在单独的模块中实现。

How have other people integrated GWT into their front end in a gradual fashion?

其他人如何以渐进的方式将GWT融入他们的前端?

2 个解决方案

#1


5  

One of the ways GWT was designed to be used is exactly as you've used it. We have done that in many of our apps - where there is one GWT module with multiple 'parts' that are loaded based on whether a given id exists on a page or not. So I don't see that you'll have any issues at all going this way. We often use this approach even for new web applications, where we just want a few 'widgets' on the page, rather than coding the whole application in GWT.

设计使用GWT的方法之一与您使用它完全一样。我们已经在许多应用程序中完成了这项工作 - 其中有一个GWT模块具有多个“部件”,这些部件是根据页面上是否存在给定ID而加载的。所以我没有看到你这样做会有任何问题。我们经常使用这种方法甚至用于新的Web应用程序,我们只需要在页面上使用一些“小部件”,而不是在GWT中编写整个应用程序。

It won't make a huge difference, but one thing I would suggest is not putting the GWT Javascript code into your main template, but rather only put it on the pages that need it. It's true that if you're not running HTTPs it is cached basically forever, but it seems wrong to get people to load in the module if it's not actually needed on that page. This of course depends on how people use your site, if they are likely to download it anyway then it won't make any difference.

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

#2


2  

You're doing it right. Avoid avoid avoid the temptation to try to 'minimize' the GWT footprint by breaking it up into multiple separate apps.

你做得对。避免避免试图通过将其分解为多个单独的应用程序来“最小化”GWT足迹的诱惑。

The key to GWT performance is to have as few downloads as possible and to make sure they're cached. Loading a 250k bundle once is much better than two 200k bundles and because compression get's better with larger files you really start to reap benefits as things grow.

GWT性能的关键是尽可能少地下载并确保它们被缓存。一次加载一个250k的捆绑包比两个200k的捆绑包要好得多,并且因为随着事情的发展,压缩对于更大的文件变得越来越好,你真正开始获益。

y-slow & firebug can be really helpful when it comes to convincing yourself of this.

y-slow&firebug在说服自己时非常有帮助。

One performance trick you might check out is available in the sample chapter here: http://www.infoq.com/articles/progwt It shows a mini-architecture around loading GWT widgets into any number of slots and pre-populating data in Javascript variables. This allows your GWT widgets to load and not require a second HTTP GET to get the data they use. In practice I found that this was a nice performance boost.

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


推荐阅读
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 本文介绍了如何利用ObjectMapper实现JSON与JavaBean之间的高效转换。ObjectMapper是Jackson库的核心组件,能够便捷地将Java对象序列化为JSON格式,并支持从JSON、XML以及文件等多种数据源反序列化为Java对象。此外,还探讨了在实际应用中如何优化转换性能,以提升系统整体效率。 ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 本文将详细介绍如何注册码云账号、配置SSH公钥、安装必要的开发工具,并逐步讲解如何下载、编译 HarmonyOS 2.0 源码。通过本文,您将能够顺利完成 HarmonyOS 2.0 的环境搭建和源码编译。 ... [详细]
  • 全面解析JavaScript代码注释技巧与标准规范
    在Web前端开发中,JavaScript代码的可读性和维护性至关重要。本文将详细介绍如何有效地使用注释来提高代码的可读性,并探讨JavaScript代码注释的最佳实践和标准规范。通过合理的注释,开发者可以更好地理解和维护复杂的代码逻辑,提升团队协作效率。 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
    本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • 深入解析HTML5字符集属性:charset与defaultCharset
    本文将详细介绍HTML5中新增的字符集属性charset和defaultCharset,帮助开发者更好地理解和应用这些属性,以确保网页在不同环境下的正确显示。 ... [详细]
  • com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 在Java项目中,当两个文件进行互相调用时出现了函数错误。具体问题出现在 `MainFrame.java` 文件中,该文件位于 `cn.javass.bookmgr` 包下,并且导入了 `java.awt.BorderLayout` 和 `java.awt.Event` 等相关类。为了确保项目的正常运行,请求提供专业的解决方案,以解决函数调用中的错误。建议从类路径、依赖关系和方法签名等方面入手,进行全面排查和调试。 ... [详细]
  • PHP网站日志深度解析与数据洞察分析
    通过对PHP网站日志进行深入解析与数据洞察分析,可以有效提升网站性能和用户体验。由于网站日志数据量庞大,通常需要借助专业的日志分析工具来处理。常用的工具包括光年日志分析工具和WebLog Expert等,这些工具能够帮助技术人员快速识别并解决网站运行中的各种问题,从而优化SEO效果和提升整体运营效率。 ... [详细]
author-avatar
荷塘一只嫩藕
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有