目前我面临着与GWT代码分割相关的一个具有挑战性的问题,希望能够提供一些帮助.
我目前正在处理大型遗留GWT应用程序(MVP之前),我正在寻找基于“portlet”(我们称之为我们构建页面的各种复合小部件)的模块来分割此应用程序的代码部分.
目前,我们的模块只是通过portlet所在的软件包来识别,但是我可以更改这个来更好地适应一个通用的代码分割设计.
关于我如何设计这个代码以表明portlet /复合属于特定的“模块”的任何想法,然后拆分代码,以便第一次加载模块X中的任何portlet /组合,整个模块X被加载?
谢谢
解决方法
嗯…通常,这很简单,但我猜这不是你真正的问题吗?
只需使用:
GWT.runAsync(new RunAsyncCallback() { public void onFailure(Throwable reason) { ... } public void onSuccess() { ... } });
然后,onSuccess方法中的所有内容将被分割成另一个javascript文件,然后根据需要进行加载.
如果要将复合材料与其余代码分开,只需将复合材料的创建放在onSuccess方法中即可.
您也可以嵌套GWT.runAsync方法,因此您可以在不同的部分重新分割零件,例如.第一个GWT.runAsync加载模块X,在模块X的构造函数中,您可以执行另一个runAsync,然后加载您的组合.
对于couse来说,部分之间可能会有一些依赖关系,这使得编译器难以拆分,但是我已经用我的一个项目(大约40k行代码)测试了它,它的工作就像一个魅力.