我正在构建一个Web应用程序,该应用程序在内部通过URL管理状态,以允许用户使用浏览器按钮以及网站的UI来操纵状态。
我正在使用jQuery-BBQ来管理URL哈希,并且在hashchange上有一个处理程序,该处理程序会在URL更改时(例如,按下浏览器后退/前进按钮)相应地更改内容。但是,事情本身也发生了变化,最终改变了哈希,从而触发了hashchange处理程序并导致循环。
为了解决这些情况,我发现自己正在检查新状态是否与以前相同,如果失败,则进行收费。但是我很快就得到了相当困惑的代码,通过在每个状态上运行的多个参与者分别解决了每个状态。
是否有一种设计模式可以优雅地处理这种状态管理方案?
最佳答案
我不能建议您立即使用任何特定的设计模式来实现,但是我建议您看一下html5的pushSate()和popState()函数。这些功能能够存储状态以及与这些状态相关的数据。 github.com正在使用此技术遍历某个公共(public)存储库的目录。这是一个快速指南:https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history。希望这可以帮助。