Объединение Javascript в приложение GWT - PullRequest
5 голосов
/ 20 ноября 2010

Я пишу приложение в GWT ( mapfaire.com ), которое использует API Карт Google, и я хотел бы использовать библиотеку утилит . Написание оболочки JSNI для библиотек не проблема, но как я могу гарантировать, что компилятор «запекает» JS в само приложение, а не загружает их отдельно через скрипт модуля , включая ?

Ответы [ 4 ]

8 голосов
/ 19 августа 2013

Вы можете определить ClientBundle для своих ресурсов JavaScript, например:

public interface JsResources extends ClientBundle {
    final JsResources INSTANCE = GWT.create(JsResources.class);

    @Source("myAwesomeJavaScript.js")
    TextResource myAwesomeJavaScript();
}

и включите его в свое приложение с помощью ScriptInjector:

ScriptInjector
    .fromString( JsResources.INSTANCE.myAwesomeJavaScript().getText() )
    .inject();
6 голосов
/ 13 июля 2011

В gwt 2.4 добавлен ScriptInjector http://gwt -code-reviews.appspot.com / 1451818 /

   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 голосов
/ 20 ноября 2010

Если лицензия позволяет вам сделать это, вы можете скопировать и вставить весь код JS библиотеки в метод JSNI.

Вы также можете использовать TextResource , например:

public static interface Resources extends ClientBundle {
    @Source("some.js")
    TextResource someJs();
}

public void onModuleLoad() {
    final Resources resources = GWT.create(Resources.class);
    eval(resources.someJs().getText());
}

private static native void eval(String s) /*-{
    eval(s);
}-*/;

Текст "some.js" будет встроен непосредственно в получившееся приложение. Там не будет никакой отдельной загрузки.

0 голосов
/ 20 ноября 2010

Полезен ли проект gwt-maps для ваших нужд?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...