初学vue-router笔记

路由中有三个基本的概念 route, routes, router。

1. route: 是一条路由,它是单数, Home按钮 => home内容, 这是一条route, about按钮 => about 内容, 这是另一条路由。

2. routes: 是一组路由,把上面的每一条路由组合起来,形成一个数组。[{home 按钮 =>home内容 }, { about按钮 => about 内容}]

3. router: 是一个机制,相当于一个管理者,它来管理路由。因为routes 只是定义了一组路由,它放在哪里是静止的,当真正来了请求,怎么办? 就是当用户点击home 按钮的时候,怎么办?这时router 就起作用了,它到routes 中去查找,去找到对应的 home 内容,所以页面中就显示了 home 内容。

vue-router 中的路由也是基于上面的三个基本概念来实现的,我们只要把路径和组件对应起来,然后在页面中把组件渲染出来

1.页面实现
   在vue-router中有两个标签 <router-link> 和 <router-view> 分别对应点击和显示部分。
   <router-link>点击哪里 <router-view>显示哪里,<router-link>有个属性 to 就是说点击后去哪里 比如: <router-link to = "/login">login</router-link>

2.js中配置
定义route,是一个对象有两部分组成:path 和 component 。path指路径,component指组件。比如:

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

两条路由就组成一个routes:

   const routes = [
      { path: '/home', component: home },
      { path: '/about', component: about }
   ]

最后创建router对路由进行管理,由构造函数new vueRouter()创建,接受routes参数。

  const router = new vueRouter({
      routes:  [
        { path: '/home', component: home },
        { path: '/about', component: about }
      ]
  })

配置完成后,把router注入到vue根实例中(main.js)

  new Vue({
    router
  })

现在使用一下
1.建立home.vue 和 about.vue

// home.vue
<template>
    <div>
        <h1>home</h1>
        <p>{{homeMsg}}</p>
    </div>
</template>
<script>
    export default {
        data () {
            return {
                homeMsg: '我是home组件'
            }
        }
    }
</script>


// about.vue
<template>
    <div>
        <h1>about</h1>
        <p>{{aboutMsg}}</p>
    </div>
</template>
<script>
    export default {
        data () {
            return {
                aboutMsg: '我是about组件'
            }
        }
    }
</script>

2.在App.vue中 定义 <router-link > 和 </router-view>

<template>
  <div id="app">
    <!-- router-link 定义点击后导航到哪个路径下 -->
      <router-link to="/home">Home</router-link>
      <router-link to="/about">About</router-link>
   
    <!-- 对应的组件内容渲染到router-view中 -->
    <router-view></router-view>   
  </div>
</template>

3.在router下的index.js中定义router

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

import home from '../home.vue';
import about from "../about.vue";

Vue.use(Router)
export default new Router({
  routes: [
    {
      path: "/home",
      name: "home",
      component: home,
    },
    {
      path: "/about",
      name: "about",
      component: about
    }
  ]
})

这时候有个问题,当进入页面时没有任何内容,点击后才有内容。因为首次进入页面,它的路径是"/",没有给这个路径做相应的配置。所以要用到重定向。所谓重定向,就是重新给它指定一个方向。

    // 重定向
    {
        path: '/', 
        redirect: '/home' 
    }

/* 选中的样式 */
a.router-link-active {
color: red;
}

/* 未选中的样式 */
.gray {
color: gray
}
<router-link class="gray" to="/home">Home</router-link>

推荐阅读更多精彩内容