Каков правильный подход к запуску приложения GWT?

  • Я разрабатываю базовый скелетный HTML и начинаю оттуда вставлять компоненты и действия через java-код?

  • Планируйте построение всего этого как java-программы, создав подробные детали с использованием java-кода?

  • Или есть лучший способ, о котором я не знаю?

Кроме того, насколько легко или сложно поддерживать код?

Я новичок в GWT, и я знаю самые основы.

Заранее благодарим за ваши входы.

Ответ 1

Мое понимание после работы один год в проекте GWT/Seam. Я предполагаю, что нет существующего веб-сайта, означающего, что вы можете начать с нуля. Если есть один, я предлагаю вам почтить свое наследие и улучшить его, выборочно вставляя виджеты GWT в определенные места существующих html-страниц (некоторые подробности здесь).

Наш процесс разработки можно приблизительно свести к следующему этапу (контуры обратной связи, встречи с закрытием и такие пропущенные, вы знаете сделку):

  • Запрос функции: содержит описание требуемой функциональности на высоком уровне

  • Проводные рамки: пользовательский интерфейс высокого уровня, который дает первое впечатление о том, как функциональность будет предоставляться конечному пользователю и как она интегрирована в существующее приложение (без каких-либо звонков и свистов)

  • Final Design: окончательный расширенный интерфейс новой функции, созданной нашим дизайнером (только для фотошоп, без html-скелета, без css)

  • Реализация и тестирование: я сосредоточусь на реализации и описал, как она изменилась за один год.

Мы начали наш проект с GWT 1.6, который не имеет поддержки UiBinder. Таким образом, было принято решение: 1) собрать всю клиентскую часть нашего приложения с GWT (т.е. Java-код) или 2) построить наши страницы с помощью JSF (так как мы используем Seam) и расширить их с помощью виджетов GWT. Мы решили пойти на второй вариант, главным образом потому, что нам понравилась идея подталкивать большую часть государства к клиентам и позволить им выполнять обработку. И все в java было многообещающим с нашим сильным опытом разработки java.

Реализация бизнес-логики не была проблемой. Наибольшее время занимало создание пользовательского интерфейса: составление макета страниц и их стилизация в java занимает много времени и подвержено ошибкам. Разрыв между окончательным html (основанным на шагах 3) и виджетами GWT был слишком большим.

Переключение на UiBinder стало первым шагом, который мы предприняли, когда GWT 2.0 был выпущен. Поскольку нам пришлось переработать большую часть нашего клиентского кода, мы также адаптировали шаблон MVP. После этого значительно повысилась производительность: один разработчик реализовал бизнес-логику (главным образом, презентационную часть MVP), в то время как другая была занята построением части представления (.ui.xml и виджета). Модульные тесты также стали более легкими, поскольку основная функциональность теперь была прекрасно разделена в части презентатора (а GWTTestCase была частью прошлого).

Следующим важным шагом, который мы сейчас делаем, является переход от нашей собственной реализации MVP к более сложному (а именно gwt-platform). Обоснование этого решения: DI через GIN (зависимости понятны и код становится чище), хорошая поддержка истории браузера (мы безрассудно пренебрегаем им - огромная ошибка!), Поддержка разделения кода, шаблон команды для асинхронных вызовов и еще несколько.

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

... мои 2 цента:)

Ответ 2

Мой совет - начать с размышления о вашем интерфейсе. Как это будет выглядеть и, самое главное, как это будет функционировать. Подумайте о том, какие проблемы ваше приложение будет решать для своих пользователей, и как это можно сделать с наименьшим количеством щелчков и прокрутки. Прототип вашего интерфейса, UiBinder хорош для этого, а затем начать оживлять его с обработчиками событий и вызовами службы.

Проще всего сделать это, чтобы реализовать функцию, а затем построить интерфейс для этой реализации, но вы, как правило, получаете то, что не так приятно использовать. Возможно, вы захотите также рассмотреть вашу модель данных/схему db, но не попадаете в ловушку создания неуклюжего приложения CRUD, как и многие другие разработчики.

Код GWT довольно удобен в обслуживании, но, конечно, больше, чем пытаться построить кросс-платформенный webapp без него в моем опыте. Вы должны взглянуть на google-gin и, возможно, gwt-mvp, они помогают сохранить ваш код модульным и легко тестировать.