使用GWT历史记录而不是EventBus会受到惩罚吗

使用GWT历史记录而不是EventBus会受到惩罚吗,gwt,web-applications,gwt-history,Gwt,Web Applications,Gwt History,我正在计划我的GWT应用程序。正如Ray Ryan在Google IO 09上所说: “纠正你的历史,尽早纠正它” 我已经考虑了历史在我的应用程序中的作用,乍一看,我似乎可以通过历史标记处理所有的控制流。控制流只涉及单个索引值的规范(例如123):因此我可以将其表示为“I_123”历史标记:UI中的多个组件将触发新的历史标记,以触发UI更新。我的记录显示演示者只需监听以“i_3;”开头的历史事件,然后从匹配的标记中提取索引,并进行更新 这种策略会受到惩罚吗?如果我需要在应用程序中传递复杂的信息,

我正在计划我的GWT应用程序。正如Ray Ryan在Google IO 09上所说:

“纠正你的历史,尽早纠正它”

我已经考虑了历史在我的应用程序中的作用,乍一看,我似乎可以通过历史标记处理所有的控制流。控制流只涉及单个索引值的规范(例如123):因此我可以将其表示为“I_123”历史标记:UI中的多个组件将触发新的历史标记,以触发UI更新。我的记录显示演示者只需监听以“i_3;”开头的历史事件,然后从匹配的标记中提取索引,并进行更新

这种策略会受到惩罚吗?如果我需要在应用程序中传递复杂的信息,我很感激我会将这些信息打包成事件,但这似乎没有必要


对这一策略还有其他看法吗?

最好将历史记录用于您希望用户能够使用浏览器的“后退”和“前进”按钮来回导航的所有内容。在单个记录之间移动似乎是一个很好的例子——您可能希望让它们浏览三个记录,然后向后移动

不过,对于某些活动来说,这还不够。假设数据发生了一些变化,您希望所有的各种显示都能自我更新,即使您仍在查看
i_123
。此时,您可能希望通过eventbus发送类似于
刷新事件
(您将创建的)的内容

幸运的是,您可以使用与正在侦听历史事件的事件总线完全相同的事件总线来侦听您决定稍后添加的事件!因此,当您开始时,我建议*作为程序内通信的一种方式,监听历史事件,然后根据需要添加更多事件。只需确保不要开始将历史记录用于与导航无关的内容


*PS:GWT的
活动
地点
类是为了在您的历史记录和代码之间提供一层灵活性而构建的,并且有一些巨大的好处,比如集中式URL映射/解析(这样,当您想要更改URL方案时,您不必到处更改每个演示者)和自动“你真的想离开吗?“确认。如果您在真正开始之前有时间,我建议从一开始就使用
活动
地点
,而不是直接听历史事件。

最好将历史记录用于您希望用户能够通过浏览器的后退和前进按钮来回导航的所有内容。在单个记录之间移动似乎是一个很好的例子——您可能希望让它们浏览三个记录,然后向后移动

不过,对于某些活动来说,这还不够。假设数据发生了一些变化,您希望所有的各种显示都能自我更新,即使您仍在查看
i_123
。此时,您可能希望通过eventbus发送类似于
刷新事件
(您将创建的)的内容

幸运的是,您可以使用与正在侦听历史事件的事件总线完全相同的事件总线来侦听您决定稍后添加的事件!因此,当您开始时,我建议*作为程序内通信的一种方式,监听历史事件,然后根据需要添加更多事件。只需确保不要开始将历史记录用于与导航无关的内容

*PS:GWT的
活动
地点
类是为了在您的历史记录和代码之间提供一层灵活性而构建的,并且有一些巨大的好处,比如集中式URL映射/解析(这样,当您想要更改URL方案时,您不必到处更改每个演示者)和自动“你真的想离开吗?”确认。如果你在真正开始之前有时间,我建议从一开始就使用
活动
地点
,而不是直接听历史事件