@ProxyCodeSplit 它究竟是如何工作的?
@ProxyCodeSplit how exactly it works?
我是 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;
}
}
在其他 Presenter 中,我有 @ProxyStandard
而不是 @ProxyCodeSplit
。
我已经 运行 应用程序并登录。然后我在 chrome 的开发者控制台中打开了 Network
选项卡:
在应用程序中打开 Administation Panel
后:
如您所见,应用程序中没有添加任何新资源。
我的主要应用程序演示者 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
时,我收到了警报:"Async start"、"Async success"。所以我认为 everythink 工作,但不幸的是我没有看到资源有任何变化。请帮忙。我是不是做错了什么?
代码拆分在 SuperDevMode
中被禁用,因为它与增量编译器不兼容并且还会减慢编译速度(参见此 issue)。
要测试代码拆分,请编译您的 GWT
应用程序 (mvn clean install gwt:compile
) 并在生产模式下对其进行测试(从目标目录中取出 war 文件并将其放入 f.e.: Tomcat 服务器目录: webapps
).
我是 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;
}
}
在其他 Presenter 中,我有 @ProxyStandard
而不是 @ProxyCodeSplit
。
我已经 运行 应用程序并登录。然后我在 chrome 的开发者控制台中打开了 Network
选项卡:
在应用程序中打开 Administation Panel
后:
如您所见,应用程序中没有添加任何新资源。
我的主要应用程序演示者 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
时,我收到了警报:"Async start"、"Async success"。所以我认为 everythink 工作,但不幸的是我没有看到资源有任何变化。请帮忙。我是不是做错了什么?
代码拆分在 SuperDevMode
中被禁用,因为它与增量编译器不兼容并且还会减慢编译速度(参见此 issue)。
要测试代码拆分,请编译您的 GWT
应用程序 (mvn clean install gwt:compile
) 并在生产模式下对其进行测试(从目标目录中取出 war 文件并将其放入 f.e.: Tomcat 服务器目录: webapps
).