2011-04-05 4 views
0

Я планирую приложение GWT. Как сказал Рэй Райан в Google IO 09:Есть ли штраф за использование истории GWT вместо EventBus

«Получите свою историю правильно, и все наладится правильно».

Я рассмотрел роль истории в своем приложении, и при первых впечатлениях, похоже, я могу обрабатывать все свои потоки управления через токены Истории. Управляющие потоки всего лишь включают спецификацию одного значения индекса (например, 123): поэтому я могу представить это как токен истории «i_123»: несколько компонентов в пользовательском интерфейсе будут запускать в новых токенах истории - для запуска пользовательского интерфейса для обновления. Мой дисплей записи Presenter просто выслушал события истории, которые начинаются с «i_», затем извлекают индекс из совпадающих токенов и обновляются.

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

Любые другие мнения по этой стратегии?

ответ

4

Это хорошая идея использовать историю для всего, что вы хотите, чтобы пользователь мог перемещаться вперед и назад с помощью кнопок назад и вперед браузера. Перемещение между отдельными записями кажется хорошим примером - вы можете позволить им изучить три записи, а затем переместиться назад через них.

Этого будет недостаточно для некоторых событий. Произнесите некоторые изменения данных, и вы хотите, чтобы все ваши различные дисплеи обновлялись, даже если вы все еще смотрите на i_123. В этот момент вы можете отправить что-то вроде RefreshEvent (которое вы создали) через свой eventbus.

К счастью, вы можете использовать тот же самый eventbus, который вы слушаете для событий истории, для прослушивания событий, которые вы решили добавить позже! Итак, когда вы начинаете, я рекомендую * слушать события истории как средство внутрипрограммного общения, а затем добавлять дополнительные события по мере необходимости. Просто убедитесь, что вы не начинаете использовать историю для вещей, которые не связаны с навигацией.

* PS: GWT's Activity и Place классы созданы для обеспечения уровня гибкости между вашей историей и вашим кодом и имеют некоторые большие преимущества, такие как централизованное сопоставление URL/парсинг (так что вам не нужно менять каждый одиночный ведущий, когда вы хотите изменить схему URL) и автоматический «вы действительно хотите уйти?» Подтверждения. Если у вас есть время, прежде чем вы начнете, я рекомендую использовать Activity и Place с самого начала, а не напрямую слушать события истории.