Как отключить разделение кода в GWT? - PullRequest
10 голосов
/ 27 сентября 2010

У нас очень большой проект 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 раз дольше. Я предполагаю, что код не очень эффективен при работе с проектом, содержащим очень большое количество классов. Таким образом, 2-минутная сборка становится 20-100-минутной сборкой, что недопустимо.

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

Есть идеи?

1 Ответ

5 голосов
/ 27 сентября 2010

Передать -draftCompile в качестве аргумента компилятора.Взгляните на этот пост: Улучшение скорости компиляции GWT

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