vue2.0路由进阶

一、路由的模式

  第一种用history方式实现,HTML5使用window.history.pushState()实现路由的切换而不刷新页面。

  第二种使用hash值的方式来实现。

  vue2.0两种都可以使用只需要在配置路由时加上

  mode:'history/mode' vue2.0默认为hash模式。需要切换为history模式时使用

  

  const router = new VueRouter({

  // mode:'history',

  routes:routes

  })

  两种模式的区别:

  hash:支持所有浏览器,包括不支持HTML5的浏览器。

  history:依赖html5 history API

二、一般配置路由:

  

  <div>

    <router-link to="/home">主页</router-link>

    <router-link to="/news">新闻</router-link>

  </div>

  <div>

    <router-view></router-view>

  </div>

  //准备组件

  var Home={

  template:'<h3>我是主页</h3>'

  };

  const News={

  template:'<h3>我是新闻</h3>'

  };

  //配置路由

  const routes=[

  {path:'/home',component:Home},

  {path:'/news',component:News},

  {path:'*',redirect:'/home'}

  ];

  //生成路由实例

  const router = new VueRouter({

  routes:routes

  });

  //最后挂载

  new Vue({

  router:router,

  el:'#box'

  })

这样有一个缺点:如果修改路由配置的路径时每一个router-link都需要改变,所以有如下优化方法:

  html中:

    <router-link :to="{name:'Home'}"> //有冒号,传入的为一个对象

  JS中:

    配置路由时使用

      routes:[

        {name:'Home',path:'/',component:Home},

      ]

    需要改变路径时只需要改变配置时的路径即可。

三、路由使用tag标签

  例如有些时候在ul中必须嵌套li要设置路由的话必须在li中再嵌套<router-link>

  eg:

  <ul>

      <li><router-link></router-link></li>  

    </ul>

  使用tag标签时即可优化:

    <ul>

      <router-link tag="li"></router-link>

    </ul>

四、动态路由

  eg:

  <router-link :to="{name:'BookDetails',params:{id:1}}"></router-link>   

  在JS中使用

  const bookID = this.$router.params.id调用即可