【发布时间】:2017-02-27 08:24:06
【问题描述】:
我们在 GWT 之上使用 JBoss Errai 框架来构建 Web 应用程序。我们遇到的问题是应用程序的编译版本在使用优化编译时已经有大约 10 兆字节的大小。
GWT/Errai 应用程序有没有办法在加载 while cache.js 文件之前拆分或以某种方式显示初始页面?
【问题讨论】:
我们在 GWT 之上使用 JBoss Errai 框架来构建 Web 应用程序。我们遇到的问题是应用程序的编译版本在使用优化编译时已经有大约 10 兆字节的大小。
GWT/Errai 应用程序有没有办法在加载 while cache.js 文件之前拆分或以某种方式显示初始页面?
【问题讨论】:
您可以使用Code Splitting 机制。
要拆分您的代码,只需在以下位置插入对方法
GWT.runAsync的调用 您希望程序能够暂停的地方 下载更多代码。这些位置称为分割点。
例如:
public class Hello implements EntryPoint {
public void onModuleLoad() {
Button b = new Button("Click me", new ClickHandler() {
public void onClick(ClickEvent event) {
GWT.runAsync(new RunAsyncCallback() {
public void onFailure(Throwable caught) {
Window.alert("Code download failed");
}
public void onSuccess() {
Window.alert("Hello, AJAX");
}
});
}
});
RootPanel.get().add(b);
}
}
...最初下载的代码不包含字符串“你好, AJAX”也没有实现 Window.alert 所需的任何代码。一旦 单击按钮,将到达对 GWT.runAsync 的调用,并且 代码将开始下载。假设下载成功, onSuccess 方法将被调用;因为必要的代码有 已下载,该调用将成功。如果下载失败 代码,然后 onFailure 将被调用。
您将在文档中找到详细信息:http://www.gwtproject.org/doc/latest/DevGuideCodeSplitting.html
【讨论】:
我遇到了同样的问题。我的应用程序有 8Mo 大,我设法通过更改 GWT 编译选项之一将其减少到 800ko:输出样式从详细到 混淆。
【讨论】:
如果您不想使用分割点来实际减少初始负载大小,您可以在开始时显示一些加载屏幕,以便用户至少知道应用程序正在启动。
这可以通过以下方式轻松完成:
div,显示一些加载动画(example)div 应添加在您的 <script type="text/javascript" src="app.nochache.js"></script> 标记之前div 一个ID,例如:loading-icon onModuleLoad 方法中,在加载*.cache.js 之后,通过将其设置为display:none; 和/或将其从DOM 中移除来移除div【讨论】: