我是GWT和GWTP的新手。我知道什麼是GWT代碼拆分和GWTP代理代碼拆分。我已經紅:@ProxyCodeSplit它的工作原理是什麼?
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
。 。
,你可以:在應用程序中打開Administation Panel
後
和:
我已經運行的應用程序並登錄,然後我打開Network
標籤在Chrome的開發者控制檯看,沒有新的資源添加到應用程序。
我的主應用程序發佈者AppPresenter
實現從com.gwtplatform.mvp.client.proxy
接口AsyncCallStartHandler, AsyncCallFailHandler, AsyncCallSucceedHandler
。我覆蓋這些方法:
@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
我正在給allerts:「異步啓動」,「異步成功」。所以我認爲這個想法是可行的,但不幸的是我看不到任何資源上的變化。請幫忙。我做錯了什麼?
你在調試模式(超級開發模式)下使用生產編譯來測試它嗎?調試模式代碼分割中的AFAIK被禁用。 –
我只在超級開發模式下測試過它。你的意思是'禁用'整個src是一次下載的。或者每當我更換有代碼拆分的地方時下載? - 正在發生這種情況 – masterdany88
將不會生成任何代碼拆分點,並且整個應用程序一次性被卸載。如果您更改任何代碼,SDM將重新編譯該應用程序,並再次下載整個代碼。爲了測試代碼拆分,請嘗試在生產模式下運行它。 –