前端路由的两种模式

2021-05-25  本文已影响0人  雷雨leiyu

我们都知道单页应用的路由有两种模式:hash 和 history,那么它们的工作原理是是什么?

浏览器提供的路由跳转API:location与history

location与history都是浏览器的对象:window.location与window.history。

window.location对象

通过改变其属性值修改页面的 url。我们在单页应用中需要做到的是改变 url 不刷新页面。

window.history对象

history 接口是 HTML5 新增的,它有两个方法可以改变 url 而不刷新页面。

url变化监听

当路由发生变化的时候我们需要得知这个变化并且调用相应的功能模块,那么这个变化是如何被监听到的呢?事实上是通过浏览器的两个事件来做到的。

// hash模式
window.addEventListener("hashchange", function(e) {
  console.log(e);
});
// history模式
window.addEventListener("popchange", function(e) {
  console.log(e);
});

hash 模式和 history 模式的选择

history模式:前端的url必须和实际向后端发起请求的url 一致。

hash模式对SEO不友好。

Vue中路由模式的配置

export default new Router({
  mode: 'hash', // 或者history
  routes: [
  {
    path: '/',
    name: 'home',
    component: Home
  }
])
上一篇 下一篇

猜你喜欢

热点阅读