【问题标题】:GWT cache.js too big -- take time for the app to show upGWT cache.js 太大——应用需要一些时间才能显示出来
【发布时间】:2017-02-27 08:24:06
【问题描述】:

我们在 GWT 之上使用 JBoss Errai 框架来构建 Web 应用程序。我们遇到的问题是应用程序的编译版本在使用优化编译时已经有大约 10 兆字节的大小。

GWT/Errai 应用程序有没有办法在加载 while cache.js 文件之前拆分或以某种方式显示初始页面?

【问题讨论】:

    标签: java gwt errai


    【解决方案1】:

    您可以使用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

    【讨论】:

    • 我实际上正在寻找适合 Errai 的东西
    • 您不太可能找到 Errai 特有的东西(因为它非常不受欢迎),但是代码拆分,正如前面提到的,是一种基本的 GWT 机制,并且正在解决您的确切问题;所以你很有可能它会为你工作(除非 Errai 做了一些专门让你避免使用代码拆分的事情)
    • 我不会说 Errai 不受欢迎,我听说过它的好消息。虽然不知道 Errai,但我无能为力(并且同意 Errai 通过生成一些难以/不可能针对 GWT 编译器进行优化的代码人为地造成了臃肿;可能取决于您使用的 Errai 功能)
    【解决方案2】:

    我遇到了同样的问题。我的应用程序有 8Mo 大,我设法通过更改 GWT 编译选项之一将其减少到 800ko:输出样式从详细到 混淆

    【讨论】:

      【解决方案3】:

      如果您不想使用分割点来实际减少初始负载大小,您可以在开始时显示一些加载屏幕,以便用户至少知道应用程序正在启动。

      这可以通过以下方式轻松完成:

      • 向您的主页添加一个div,显示一些加载动画(example)
      • div 应添加在您的 <script type="text/javascript" src="app.nochache.js"></script> 标记之前
      • div 一个ID,例如:loading-icon
      • onModuleLoad 方法中,在加载*.cache.js 之后,通过将其设置为display:none; 和/或将其从DOM 中移除来移除div

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-04
        • 1970-01-01
        • 2016-01-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-23
        相关资源
        最近更新 更多