Как отключить разбиение кода в GWT?

У нас есть очень большой проект GWT, в результате которого получается монолитное приложение размером около 2 МБ. Очевидный способ разбить его - использовать точки разделения. Например, наше приложение управляется меню, поэтому логика каждого действия меню может быть точкой разделения. Кроме того, код, вызывающий GWT RPC, также может быть точкой разделения. Таким образом, приложение размером 2 МБ, вероятно, можно было бы разбить на запускаемое приложение размером 300 КБ, а остальное загружалось при первом использовании.

GWT обрабатывает вызовы GWT. runAsync () как места, где JS может быть разбит на более мелкие части, которые загружаются асинхронно во время выполнения. например, чтобы установить точку разделения, в которой вызывается doSomething (), мы пишем это так:

GWT.runAsync(new RunAsyncCallback() {
  public void onFailure(Throwable caught) {
    Window.alert("Oh dear could not load app");
  }

  public void onSuccess() {
    doSomething();
  }
});

Компилятор GWT увидит этот код и пометит его как кандидата на разделение и разбивает код на более мелкие фрагменты, которые будут загружаться по мере их загрузки.

Проблема в том, что если мы добавляем в код точки разделения, сборка буквально занимает в 10-50 раз больше времени. Я предполагаю, что код не очень эффективен при работе с проектом, содержащим очень большое количество классов. Таким образом, двухминутная сборка становится 20-100-минутной сборкой, что недопустимо.

Итак, вопрос в том, как я могу поместить точки разделения в код, но не допустить разделения компилятора, если я явно не прошу об этом? Я предполагаю, что повседневная разработка будет игнорировать точки разделения, но ночная или производственная сборка будет разделена.

Есть идеи?

10
задан locka 27 September 2010 в 19:32
поделиться