【问题标题】:GWT: deferred loading of external JS resourcesGWT:延迟加载外部 JS 资源
【发布时间】:2011-11-01 15:31:21
【问题描述】:

我有一个依赖于一些外部 JS 文件的小部件,我想延迟加载所有这些外部资源。我已经使用代码拆分来延迟加载与小部件有关的 GWT 代码,但是使用 script 标记在 gwt.xml 中定义的 JS 文件无论如何都会加载,这是不可取的。

是否有标准的 GWT 方式按需加载这些外部资源?我可以使用原始 JS 自己完成,但我也不想花时间在这上面。

【问题讨论】:

标签: gwt deferred-loading


【解决方案1】:

我想你会想看看com.google.gwt.core.client.ScriptInjector 类。 From the javadocs:

动态创建脚本标签并将其附加到 DOM。

...

与加载为 URL 的脚本一起使用:

   ScriptInjector.fromUrl("http://example.com/foo.js").setCallback(
     new Callback<Void, Exception>() {
        public void onFailure(Exception reason) {
          Window.alert("Script load failed.");
        }
        public void onSuccess(Void result) {
          Window.alert("Script load success.");
        }
     }).inject();

这个代码当然可以在你的分割点中调用,或者在你的代码中的任何地方调用。

【讨论】:

  • 太棒了!谢谢科林。虽然,现在我必须从 2.3 迁移到 2.4 :) 我会看看情况如何。
  • 2.3 到 2.4 应该没什么大不了的,但如果是的话,你可以看看 ScriptInjector.fromUrl 是如何与 ScriptElement 一起工作的,你可以在不升级的情况下将它构建到你的应用程序中。跨度>
【解决方案2】:

ScriptInjector 非常便携。它没有任何外部依赖项,因此您应该能够将其反向移植到您的 2.3 应用程序中而不会出现太大问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    • 2010-09-30
    相关资源
    最近更新 更多