Есть ли штраф за использование истории GWT вместо EventBus? - PullRequest
0 голосов
/ 05 апреля 2011

Я планирую свое приложение GWT.Как сказал Рэй Райан в Google IO 09:

«Сделайте свою историю правильной и сделайте ее правильной рано».

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

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

Какие-либо другие мнения по поводу этой стратегии?

1 Ответ

4 голосов
/ 05 апреля 2011

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

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

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

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

...