GWT: отложенная загрузка внешних ресурсов JS

У меня есть виджет в зависимости от некоторых внешних JS файлов, и я бы хотел ленить загрузить все эти внешние ресурсы. Я уже использовал разделение кода для ленивой загрузки кода GWT, относящегося к виджету, но файлы JS, определенные в gwt.xml, с помощью тега script, загружаются в любом случае, что нежелательно.

Существует ли стандартный способ GWT по загрузке этих внешних ресурсов по запросу? Я могу сделать это сам, используя raw JS, но я бы не стал тратить время на это.

Ответ 1

Я думаю, вам нужно взглянуть на класс com.google.gwt.core.client.ScriptInjector. Из javadocs:

Динамически создайте тег script и присоедините его к DOM.

...

Использование script загружено как 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

ScriptInjector довольно портативен. Он не имеет каких-либо внешних зависимостей, поэтому вы можете иметь возможность обращать его в ваше приложение 2.3 без особых проблем.