最佳GWT CodeSplitting设计封装"模块"

bre*_*777 10 java gwt

我目前面临与GWT codesplitting相关的相当具有挑战性的问题,并希望得到一些帮助.

我目前正在研究一个大型的遗留GWT应用程序(MVP之前的日子),我期待基于"portlets"(我们称之为构建我们页面的各种复合小部件)的模块对此应用程序进行代码拆分.部分.

目前我们的模块只是由portlet所包含的软件包标识,但我愿意更改它以更好地适应声音通用的代码分离设计.

关于我如何设计此代码以指示portlet /复合属于特定"模块"然后拆分代码以便第一次加载模块X中的任何portlet /复合,整个模块X被加载的任何想法?

谢谢

小智 1

嗯......通常,这很简单,但我想这不是你真正的问题......

只需使用这个:

GWT.runAsync(new RunAsyncCallback() {
    public void onFailure(Throwable reason) {
        ...
    }
    public void onSuccess() {
        ...
    }
});
Run Code Online (Sandbox Code Playgroud)

onSuccess 方法中的所有内容都将被拆分到另一个 javascript 文件中,然后根据需要加载该文件。

如果您想将组合与其余代码分开,只需将组合的创建放入此 onSuccess 方法中即可。

您还可以嵌套 GWT.runAsync 方法,这样您就可以再次将该部分拆分为不同的部分,例如,首先 GWT.runAsync 加载模块 X,在模块 X 的构造函数中,您可以执行另一个 runAsync,然后加载您的组合。

当然,该部分之间可能存在一些依赖性,这使得编译器很难拆分,但我已经用我的一个项目(大约 40k 行代码)对其进行了测试,并且它的工作方式非常神奇。