最佳GWT CodeSplitting设计封装“模块”

时间:2011-07-30 14:57:37

标签: java gwt

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

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

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

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

由于

3 个答案:

答案 0 :(得分:1)

嗯...通常情况下,这很简单,但我猜这不是你真正的问题...

只需使用:

GWT.runAsync(new RunAsyncCallback() {
    public void onFailure(Throwable reason) {
        ...
    }
    public void onSuccess() {
        ...
    }
});

然后将onSuccess方法中的所有内容拆分为另一个javascript文件,然后按需加载。

如果您想从其余代码中分离复合材料,只需将复合材料的创建放在此onSuccess方法中。

您还可以嵌套GWT.runAsync方法,因此您可以在不同的部分再次拆分部件,例如第一个GWT.runAsync加载模块X,在模块X的构造函数中你可以做另一个runAsync然后加载你的组合。

但是,部件之间可能存在一些依赖关系,这使得编译器难以拆分,但我已经使用我的一个项目(大约40k行代码)对其进行了测试,并且它就像一个魅力。

答案 1 :(得分:0)

Packagaing与代码分割没有多大关系,使代码分裂工作的主要因素是类之间的意外纠缠。如果一个类需要另一个等等,最终到达并抓住所有类,那么代码拆分就不能很好地分解成许多,因为需要第一个的行为意味着一切都是必需的。如果你将你的问题分开,即松散耦合,那么你应该能够拥有一个非常适合分裂的东西。

答案 2 :(得分:0)

如何使用GWTP - 它是一个很好的MVP框架,它们为您提供自动代码分割。您必须重新组织代码库,才能为要拆分的每个模块使用演示者/视图。然后添加codesplitting就像向演示者添加以下行一样简单:

@ProxyCodeSplit
@NameToken("firstpage")
public interface MyProxy extends ProxyPlace<FirstPagePresenter> {}

GWTP还有一个Eclipse插件,可以生成大部分样板代码。