0

我们有一个可用的 Web 应用程序,它是用 ExtJS 开发的,用于客户端,用 Struts、Spring、Hibernate 开发用于服务器端。现在,我们正在考虑迁移到 GXT(或者可能是 GWT 本身)。问题是我对 GWT/GXT 很陌生。我们正在努力决定是否走这条路。

1) 到目前为止,我们的网络应用程序有 2 个域。一个是应用(Struts+...)已经部署到,另一个主要是一个无cookie的自定义CDN。客户端和服务器之间的传输主要是 XHR 请求,发送/接收 JSON 和/或 JSONP。但是随着我们面前的新方法,我开始明白我们应该只有一个域,用于整个 GXT 应用程序。这是正确的还是我忘了在这里考虑一些事情?

如果不是,是否有可能我们只将应用程序的一部分(即 com.ourcompany.webapp.gxt.server.*)部署到主服务器,而将 GWT 编译器编译生成的内容部署到其他服务器类似 CDN 的域?

2)我们面临的另一个大问题是当前的应用程序主要由 3 个巨大的模块组成。一个负责“登录”,一个负责“Webtop”,第三个负责“每个用户可以访问的模块”。后者是由于每个用户的“访问权限”而在服务器上生成的,并且显然可能因用户而异。

在这件事上我唯一能找到的可能与此相关的是Code Splitting。虽然我'

我们希望应用程序在启动时检查用户是否已登录。如果不是,则加载 javascript 文件的 SignIn 集(即 webapp.signin.nocache.js),然后在用户输入正确的用户名/密码后,卸载此登录文件并加载 webtop.nocache.js 和 modules.nocache.js。

如果您能帮助我,我将不胜感激。

4

1 回答 1

3

1)如果您的 GWT 应用程序是从不同的域加载的,那么您必须面对相同的源策略。您不能对不同的域执行 xhr。您可以使用ScriptTagProxy来解决这个问题。但是感觉不是很自然。

2) 您可以使用 CodeSplitting 来自动动态加载应用程序的特定部分。您所要做的就是将您的拆分点变形为异步调用。详细的编译报告可以很好地概述代码拆分的工作情况。

但是 CodeSplitting 不会卸载已经加载的代码。如果它真的很重要,那么您必须将用户重定向到另一个 url 以加载适当的用户依赖模块。
一旦 Javascript 代码被加载并执行,就不可能从浏览器内存中删除代码。

问候,彼得

于 2012-07-10T09:08:22.990 回答