簡體   English   中英

最佳GWT CodeSplitting設計封裝“模塊”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM