vue中的vue-router

201 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第22天,点击查看活动详情

vue-router的安装

vue-router是什么?vue-router是vue.js官方给出的路由解决方案,只能在vue项目里使用,可以轻松管理项目中的组件的切换、

使用vue-router之前需要安装和配置,安装vue-rouer可以通过 npm install vue-router命令安装,也可以在创建vue项目的时候安装,只是通过命令安装的vue-router要自己配置

在vue项目的src目录下新建一个router文件夹,里面创建一个index.js作为vue-router的入口,配置路由模块主要分为四步:

  • 导入vue和vue-router的包
  • 调用Vue.use()把vue-router作为vue的插件
  • 创建路由实例对象
  • 向外共享路由实例对象
import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

const routes = []
const router = new VueRouter({
  routes
})

export default router

路由模块配置完成了就在main.js文件里导入这个模块,将它挂载到vue实例上,路由就配置完成了

import router from './router'

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

使用路由

配置完路由之后我们就可以使用路由了,当我们使用a标签进行页面的跳转,展示出不同内容,应该需要一个动态的组件来展示内容,但是在路由里不需要动态的组件,vue-router提供了一个组件 <router-view/> 它的作用就是给组件占位的占位

<a href="#/home"> home</a>
<a href="#/about"> about</a>
<a href="#/good"> good</a>
<router-view></router-view> //展示的组件的占位

而路由的概念就是哈希地址和要展示的组件的一个对应关系,现在需要声明这个对应的关系来使页面跳转的时候展示组件的内容,在路由模块里的index.js声明

//导入要展示的组件
import Home from '@/components/Home' 
import About from '@/components/About'
import Good from '@/components/Good'

const routes = [ //定义hash地址与组件的对应关系
  {
    path:'/home', //哈希地址
    component:Home //展示的组件
  },
  {
    path:'/about',
    component:About
  },
  {
    path:'/good',
    component:Good,
  }
 ]

声明完对应关系就可以点击不同的a标签,就会展示出不同的组件了

3.gif

使用router-link代替a标签

当安装和配置了vue-router之后就可以使用router-link来代替a标签,router-link有个to属性 代表要访问的地址,可以理解为a标签的href,而且不用写#号,还有一个tag属性,可以将router-link渲染成其他的属性,如button,使用router-link的效果完全和上面一样

<router-link to="/home" tag="button">Home</router-link>
<router-link to="/about" tag="button">About</router-link>
<router-link to="/good" tag="button">Good</router-link>

redirect重定向

当我们默认进入项目的时候,组件是不会被展示出来的,因为此时的路径是'/'

图片.png

而组件的路径都是/home/about之类的,其实'/'也是一个哈希地址,只是没有对应的路由规则,我们希望可以默认展示某个组件,就需要用到redirect重定向:访问地址a的时候强跳转到地址b,从而展示特定的组件页面

{
    path:'/',
    redirect: '/home' //当哈希地址为/时强制跳转的地址
}

图片.png