Vue 路由

路由:路:路径(地址)  由:方向  
    针对于单页面应用,所提供的一个解决方案。根据地址传递的参数,来决定具体要使用的组件。
1、下载(如果已下载该步可以省略)
    cnpm install vue-router -S
2、引入
    import Router from 'vue-router'
3、安装:
    Vue.use(Router)
4、生成router对象
    export default new Router({
      mode: 'history',
      base: process.env.BASE_URL,
      routes: [
        {
          path: '/',
          name: 'home',
          component: Home
        },
        {
          path: '/about',
          name: 'about',
          // route level code-splitting
          // this generates a separate chunk (about.[hash].js) for this route
          // which is lazy-loaded when the route is visited.
          component: () => import(/* webpackChunkName: "about" */ './views/About.vue')
        }
      ]
    })
**************************************************************
引入组件有两种方法
1、import One from '@/views/One'
    {
        path:"/one",
        component:One
    }
2、
        {
            path:"/two",
            component:()=>import('@/views/Two')
        }
**************************************************
路由如何引入子组件
    1、在components下新建一个文件Child.vue
    2、在路由组件当中使用时
        1、
           import Child from "@/views/Child"
           export default {
                components:{
                    Child
                }
           }
        2、
            export default {
                   name: "one",
                   components:{
                       Child:()=>import('@/components/Child')
                   }
               }
************************************************
router-view:是一个内置的组件。将符合要求的路由所指向的组件进行渲染的地方。
router-link:是一个内置组件。可以实现组件的切换。
    属性:
        1、to:跳转到什么路由
* 地址是不区分大小写的。对大小写不敏感
* 如果地址相同,以第一次优先。
*****************************************
404:
  {
        path:"*",
        component:()=>import("@/views/Error")
    }
****************************************
别名:可以通过“/"或“/home"来进行访问
       {
            path: '/',
            name: 'home',
            alias:"/home",
            component: Home
        },
* :提供了另外一种访问该路由的方式。
*****************************************
重定向:
{
  path:"/lalala",
  redirect:"/two"
},
*当你的地址为lalala时,重定向到path为“/two" 的路由
****************************************
如何实现路由的跳转
      <router-link to="/">Home</router-link> |
      <router-link to="/about">About</router-link>|
      <!--<router-link to="/one">One</router-link>|-->
      <!--<router-link :to="one">One1</router-link>|-->
      <!--<router-link :to="{path:'/one'}">One2</router-link>|-->
      <router-link :to="{name:'xixi'}">One3</router-link>|
      <router-link to="/two">two</router-link>|
*******************************************************************
单页面多路由
       {
            path:"/three",
            // component:()=>import("@/views/Three")
            components:{
                one:()=>import("@/views/One"),
                two:()=>import("@/views/Two"),
                three:()=>import("@/views/Three"),
                default:()=>import("@/views/MyTwo")
            }
        }
 template:
  one:<router-view name="one"/>
     <hr/>
     two:<router-view name="two"/>
     <hr/>
     three:<router-view name="three"/>
     <hr>
     <router-view></router-view>
     <hr>
     <router-view></router-view>

*******************************************************************
* this.$route来得到当前路由的配置信息。
路由传值:
    1、query
        1、如何传递
            <router-link to="/query?a=1&b=4">query</router-link>|-->
            <router-link :to="{name:'query',query:{a:3,b:7}}">query</router-link>|
            <router-link :to="{path:'/query',query:{a:1,b:3}}">query</router-link>|
        2、如何接收
            this.$route.query;// {a:xx,b:xxx}
        优点:刷新数据不会丢失.还可以传递对象
    2、params
        1、如何传  *:params不可以与你的path结合使用。
       <router-link :to="{name:'params',params:{a:1,b:3}}">params</router-link>
       2、接收:
        this.$route.params.// {a:1,b:3}
        缺点:刷新数据不存在。
    3、设置路由
        1、配置路由
            {
                name:"setRouter",
                path:"/setRouter/:a/:b",
                component:()=>import("@/views/SetRouter")
            }
        2、传
        <router-link :to="{path:'/setRouter/1/2'}">setRouter</router-link>|
        <router-link :to="{path:'/setRouter/1/2'}">setRouter</router-link>|
        3、接收
            this.$route.params


********************************************************************
路由编程式导航:通过你的JS语句来控制你路由的跳转。
this.$router.push("/");
this.$router.push({name:"query",query:{a:5,b:8}});
this.$router.push({name:"params",params:{a:5,b:8}});
this.$router.go(-1):后退
this.$router.go(1):前进

  

原文地址:https://www.cnblogs.com/zcccz/p/11396837.html