[英]Best GWT CodeSplitting design to encapsulate “modules”
我目前面臨與GWT codesplitting相關的相當具有挑戰性的問題,並希望得到一些幫助。
我目前正在研究一個大型的遺留GWT應用程序(MVP之前的日子),我期待基於“portlets”(我們稱之為構建我們頁面的各種復合小部件)的模塊對此應用程序進行代碼拆分。部分。
目前我們的模塊只是由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然后加載您的組合。
當然,部件之間可能存在一些依賴關系,這使得編譯器難以拆分,但我已經用我的一個項目(大約40k行代碼)測試了它,它就像一個魅力。
Packagaing與代碼分割沒什么關系,使代碼分裂工作的主要因素是類之間的意大利面糾纏。 如果一個類需要另一個等等,最終到達並抓住所有類,那么代碼拆分就不能很好地分解成許多,因為需要第一個的行為意味着一切都是必需的。 如果你把你的問題分開,即松散耦合,那么你應該能夠擁有一個非常適合拆分的東西。
如何使用GWTP - 它是一個很好的MVP框架,它們為您提供自動代碼分割。 您必須重新組織代碼庫,才能為要拆分的每個模塊使用演示者/視圖。 然后添加codesplitting就像向演示者添加以下行一樣簡單:
@ProxyCodeSplit
@NameToken("firstpage")
public interface MyProxy extends ProxyPlace<FirstPagePresenter> {}
GWTP還有一個Eclipse插件,可以生成大部分樣板代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.