Vue Router 路由

239 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情

这篇来讲路由,看到路由俩字大多人会想起路由器,但是这个跟我们生活中的路由器可是有很大差别的。

SPA的理解

Vue-router是vue的一个插件库,专门实现SPA,那什么是SPA应用呢

  1. 就是Web应用(single page web application ,SPA),整个应用只有一个完整的页面
  2. 点击页面中的导航链接不会刷新页面,只会做页面的局部更新
  3. 而且需要通过ajax请获取

路由的理解

  1. 什么是路由

一个路由就是一组映射关系(key-value),key为路径,value可能是function或componen

  1. 路由的分类

后端路由:value是function,用于处理客户端提交的请求,工作过程中:服务器接受到一个请求时,根据请求路径找到匹配的函数来处理请求,返回响应式数据

前端路由:value是component,用于展示页面内容,工作过程中当浏览器的路径发生改变的时候,对应的组件就会显示

基本路由

  1. 安装vue-router,命令npm i vue-router
  2. 应用插件Vue.use(VueRouter)
  3. 编写router配置项
import Vue from 'vue'  
import VueRouter from 'vue-router'//引入VueRouter
import Login from '@/views/Login' //路由组件
import Layout from '@/views/Layout' //路由组件
Vue.use(VueRouter)

//创建router实例对象,去管理一组一组的路由
const routes = [
  {
    path: '/',
    redirect: '/layout' // 这里默认打开首页(layout页下的home)
  },
  {
    path: '/login',
    component: Login
  },
  {
    path: '/layout',
    component: Layout,
    redirect: '/layout/home', // 默认显示二级页面为home首页

]

const router = new VueRouter({
  routes
})

//暴露router
export default router
  1. 实现切换 <router-link></router-link>浏览器会被替换为a标签active-class可以配置高亮样式 <router-link active-class="active"></router-link>

5.指定展示位置: <router-view></router-view>

6.注意:路由组件通常放在pages文件夹,一般组件通常存放在components文件夹 通过切换“隐藏”了的路由组件,默认是被销毁了的,需要的时候再去挂载 每个组件都有自己的$router属性,里面储存着自己的路由信息,整个应用中只有一个router,可以通过组件的$router属性获取到

多级路由

1.配置路由规则,使用children配置项

import Vue from 'vue'
import VueRouter from 'vue-router'
import Login from '@/views/Login'
import Layout from '@/views/Layout'
import Home from '@/views/Home'
Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    redirect: '/login' // 这里默认打开首页(layout页下的home)
  },
  {
    path: '/login',
    component: Login
  },
  {
    path: '/layout',
    component: Layout,
    redirect: '/layout/home', // 默认显示二级页面为home首页
    children: [ //通过childer配置子路由
      {
        path: 'home', //此处一定不要带斜杠
        component: Home
      }
]

const router = new VueRouter({
  routes
})

export default router

跳转(要写完整路径)

<router-link to="Layout/home"></router-link>