据我所知,到目前为止,像Angular JS这样的前端框架,Backbone JS正在利用哈希值。但反应路由器并不一定需要散列。有人可以解释一下这是如何工作的?
我想这一定很简单,可能会阻止更改网址时的默认行为。
我不知道!
答案 0 :(得分:3)
它被称为"推送状态路由"它使用HTML5 History API
var stateObj = { foo: "bar" };
history.pushState(stateObj, "page 2", "bar.html");
假设http://mozilla.org/foo.html执行前面的JavaScript:
这会导致网址栏显示http://mozilla.org/bar.html, 但不会导致浏览器加载bar.html甚至检查 bar.html存在。
现在假设用户现在导航到http://google.com,然后 点击回来。此时,将显示URL栏 http://mozilla.org/bar.html,该页面将获得一个popstate事件 其状态对象包含stateObj的副本。页面本身会 看起来像foo.html,虽然页面可能会修改其内容 popstate事件。
如果我们再次点击返回,则网址将更改为 http://mozilla.org/foo.html,该文件将获得另一份文件 popstate事件,这次使用null状态对象。去吧 返回不会更改文档的内容 上一步,虽然文档可能会更新其内容 收到popstate事件后手动。
一旦我们理解了这一切,我们只需要监听窗口的popstate
事件,这些事件将在每次状态更改时触发,无论是通过点击触发,按下浏览器后退按钮等等