2015-10-12 84 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