Vue-router

1、根文件:index.html

  其中的 <div id="app"> 为整个单页的挂载点

2、转接文件:main.js

  创建Vue并接入vue-router

  一般为:

  

import Vue from 'vue'
import App from './App.vue'     //模板文件   
import router from '@/router.js'  //导入编辑router文件
 
import '@assets/css/app.css'      //样式文件
 
new Vue({
    router,
    render: h => h(App)
}).$mount('#app')

 3、路由控制文件:router.js

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

import home from '@/components/home.vue'
import about from '@/components/about.vue'
import document from '@/components/document.vue'

var router = new Router({
  mode: 'history',
  routes:[
    {
      path:'/home',
      component: home
    },
    {
      path:'/about',
      component: about
    },
    {
      path:'/document',
      component: document
    }
  ]
});



export default router

4、主模板:App.vue

<template>
  <div id="app">
    <!-- <img src="./assets/logo.png"> -->
    <div class="nav-box">
      <ul class="nav">
        <li>
          <router-link to="/home">home</router-link>
        </li>
        <li>
          <router-link to="/document">document</router-link>
        </li>
        <li>
          <router-link to="/about">about</router-link>
        </li>
      </ul>
    </div>
    <router-view></router-view>
  </div>
</template>
<script type="text/javascript">
  export default{
    name:'app'
  }
</script>
<style>
</style>

笔记:

1、一般高版本浏览器,html5支持history的用history模式

2、动态绑定<router-link> ----App.vue  文件中

 

export default{
    name:'app',
    data(){
      return {
        index: '/home'
      }
    }
  }

  原本:<router-link to="/home" tag="div">home</router-link>

  直接动态绑定:<router-link :to="index">home</router-link>

  对象:<router-link :to="{ path:'/home' }">home</router-link>

默认<router-link> 生成的是  <a>  标签,在设置tag="div" 后,生成div标签

<router-link>变为li,<router-link :to="index" tag="li"><i></i><span>home</span></router-link>

3、路由中   router.js

linkActiveClass : 'is-active'  该属性设置自定义选中class名,如果页面上某个<router-link>被选中,则会加上"is-active"的class样式

此样式在css文件中写,也可以设置行间样式 ==>  active-class="activeClass"    

<router-link :to="{path:'/document'}" active-class="activeClass">document</router-link>  ,其他的<router-link>标签被选中会加上'is-active'样式,这个则会加上 "activeClass"样式

4、<router-link>本身是鼠标点击时进行切换,现改成鼠标移入进行切换

<router-link event="mouseover">

5、如果路由路径未匹配到已有页面

在routes中配置

routes:[{

    path: '*',  // * 未通配符

    component: noFound  //404页面(自己写的)

}]

6、重定向

routes:[{

 path: '/home',

   name: 'Home',

   componet: home    //import项

   }{

    path: '*',  // * 未通配符

    //重定向

 //redirect: '/home'

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

   //redirect: { name: 'Home' }

   //函数

 redirect: (to) =>{  //动态设置重定向的目标

  //目标量路由对象,就是访问的路径的路由信息

  //console.log(to);

  //return '/home';

 

  if( to.path === '/123' ){
    return '/home';
  }else if(to.path === '/456'){
    return {path : '/document'}
  }else{
    return {name: 'About'}
  }

 }

}]

  

原文地址:https://www.cnblogs.com/haishen/p/10063135.html