@ProxyCodeSplit究竟是如何工作的?

时间:2016-07-15 12:24:30

标签: gwt gwtp code-splitting

我是GWT和GWTP的新手。我知道什么是GWT代码拆分和GWTP代理代码拆分。我已经红了:

http://www.gwtproject.org/doc/latest/DevGuideCodeSplitting.html http://dev.arcbees.com/gwtp/core/presenters/creating-places.html

我以为我明白了。所以我想用。:

我有Administration panel的应用程序,只有部分用户可以访问。因此,无需为所有人​​下载Administration panel相关代码。所以在Administration Presenter我添加了@ProxyCodeSplit,如下所示:

public class AdminAreaPresenter extends Presenter<AdminAreaPresenter.MyView, AdminAreaPresenter.MyProxy> {
    @ProxyCodeSplit
    @NameToken(Routing.Url.admin)
    @UseGatekeeper(IsAdminGatekeeper.class)
    public interface MyProxy extends TabContentProxyPlace<AdminAreaPresenter> {}

    @TabInfo(container = AppPresenter.class)
    static TabData getTabLabel(IsAdminGatekeeper adminGatekeeper) {
        return new MenuEntryGatekeeper(Routing.Label.admin, 1, adminGatekeeper);
    }

    public interface MyView extends View {}

    AppPresenter appPresenter;

    @Inject
    AdminAreaPresenter(EventBus eventBus, MyView view, MyProxy proxy, AppPresenter appPresenter) {
        super(eventBus, view, proxy, AppPresenter.SLOT_TAB_CONTENT);
        this.appPresenter = appPresenter;
    }
}

在其他演示者中,我有@ProxyStandard而不是@ProxyCodeSplit

我已经运行了应用并登录。然后我在chrome的开发者控制台中打开了Network标签:

enter image description here

在应用程序中打开Administation Panel之后: enter image description here

正如您所看到的,没有新的资源添加到应用程序中。

我的主应用程序演示者AppPresenter实现了来自AsyncCallStartHandler, AsyncCallFailHandler, AsyncCallSucceedHandler的接口com.gwtplatform.mvp.client.proxy。并重写这些方法:

@ProxyEvent
@Override
public void onAsyncCallStart(AsyncCallStartEvent event) {
    Window.alert("Async start");
    getView().setTopMessage("Loading...");
}
@ProxyEvent
@Override
public void onAsyncCallFail(AsyncCallFailEvent event) {
    Window.alert("Async fail");
    getView().setTopMessage("Oops, something went wrong...");
}
@ProxyEvent
@Override
public void onAsyncCallSucceed(AsyncCallSucceedEvent event) {
    Window.alert("Async success");
    getView().setTopMessage(null);
}

当我输入AdmininArea时,我接受了“异步启动”,“异步成功”。所以我认为每个人都会工作,但不幸的是我没有看到任何资源变化。请帮忙。我做错了什么或什么?

1 个答案:

答案 0 :(得分:1)

SuperDevMode中禁用了代码拆分,因为它与增量编译器不兼容,并且还会降低编译速度(请参阅此issue)。

要测试代码拆分,请编译GWT应用程序(mvn clean install gwt:compile)并在生产模式下测试它(从目标目录获取war文件并将其放在fe:Tomcat服务器目录中:{{1} })。