Vue中的路由模式
hash模式
比如 ‘http://www.baidu.com/#/abc’ hash 的值为 ‘#/abc’
它的特点在于:hash 虽然出现 URL 中,但不会被包含在 HTTP 请求中,因此hash值的变化不会导致浏览器向服务器发出请求,而hash改变会触发onhashchange (只改变#后面的url片段);hash发生变化url都会被浏览器记录下来,从而可以使用浏览器的前进和后退
对于hash模式会创建hashHistory对象,在访问不同的路由的时候,会发生两件事:
HashHistory.push()将新的路由添加到浏览器访问的历史的栈顶HasHistory.replace()替换到当前栈顶的路由
history模式:
通过 HTML5 中新增的 pushState() replaceState() 方法
应用于浏览器的历史记录,在已有的 go(),back(),forward() 的基础之上,它们提供了对历史记录进行修改的功能
当它们执行修改时,虽然改变了当前的 URL,但你浏览器不会立即向后端发送请求
我们可以通过 onpopstate 事件,监听 history 的变化,然后渲染自己要渲染的组件,达到路由的效果