2015-10-12 120 views
1

我正在尋找一種方法來確保GWT中外部腳本的排序。該方法必須與SuperDevMode兼容。到目前爲止我想出了兩種方法:GWT同步腳本加載

  1. 將所有javascript文件複製到war文件夾中(不合需要);和
  2. 在onModuleLoad()中使用ScriptInjector。

我選擇使用選項2,但是我想知道是否有另一種方式執行除了級聯回調之外的特定順序的腳本,因爲這會導致性能顯着下降。我想知道是否有人遇到這個問題。

下面是一個級聯回調的簡單示例。

ScriptInjector.fromUrl(GWT.getModuleBaseForStaticFiles() + "somescript.js").setCallback(new Callback<Void, Exception>() { 
    @Override 
    public void onFailure(Exception reason) { 
    } 

    @Override 
    public void onSuccess(Void result) { 
     // repeat ScriptInjector.fromUrl() n many times 
    } 
}).inject(); 

截至目前,我正在尋找一種方法來異步並行下載(在一個字符串存儲?)所有的JavaScript文件,然後使用ScriptInjector.fromString(jsBody)所需的順序將它們注入。有沒有使用GWT將腳本體下載到特定類中的方法?任何建議或改進我的方法將不勝感激。

在此先感謝。

回答

1

通過將腳本放入TextResources(可以是同步或異步),可以按照所需順序注入腳本。

如果您希望將這些腳本保存在主應用程序之外,您可以先加載它們,然後按照所需順序注入它們。

+0

TextResource和ExternalTextResource只加載視爲安全的文件(即不是JavaScript文件)。我找到的解決方案與使用ExternalTextResource類似實現的安全驗證已刪除的解決方案類似。 – tenble