文章目录

  • 参考
  • 描述
  • Vue Router
    • 获取
      • npm
      • yarn
      • 依赖问题
  • 使用
    • router-link
    • router-view
    • 配置路由插件
      • 基本结构
      • 子组件
      • 导入需要进行路由匹配的组件
      • 定义路由规则
      • 代码整合
    • 挂载路由
    • 主逻辑
    • 执行效果
    • 重定向

参考

项目 描述
搜索引擎 Bing
哔哩哔哩 黑马程序员
Vue Router 官方教程

描述

项目 描述
Edge 109.0.1518.70 (正式版本) (64 位)
操作系统 Windows 10 专业版
@vue/cli 5.0.8
npm 8.19.3
VueJS 2.6.14
Vue Router 3.6.5

Vue Router

Vue Router 是 VueJS 官方提供的路由插件,使用该插件你将能更加便利的管理 VueJS 创建的单页面应用程序(Single Page Web Application,SPA)中的组件间的动态切换。

获取

npm
npm install vue-router
yarn
yarn add vue-router
依赖问题

vue-router 4.x 仅支持 vue-router 3.x 版本,但我使用的 VueJS 的版本号为 2.6.14,所以我将使用如下命令安装 vue-router 3.x

npm install vue-router@3

请注意您使用的 vue-router 是否与使用的 VueJS 相匹配,如果不匹配你可能将在控制台中看到如下错误信息:

使用

router-link

router-link 元素为组件元素,该元素拥有 to 属性,你可以通过该元素定义路由,通过该元素中的 to 属性指定链接。

举个栗子

<router-link to="/Dodgerblue">Dodgerblue</router-link>

注:

你可以使用 a 元素代替 router-link 元素,但并不推荐这么做。使用 router-link 而不是 a 元素可以使你获得来自 vue-router 的更多帮助。

router-view

与路由匹配的组件将替换 router-view 元素。你可以把该元素放在任何位置以适应你的布局。

配置路由插件

如果你使用类似 Vue CLI 等类似工具构建了 Vue 项目,请在 src 路径下创建 router 文件夹,并在该文件夹中创建 index.js 文件,该文件将用于对路由插件进行配置。

基本结构
// 导入 VueJS
import Vue from 'vue';
// 导入 vue-router
import VueRouter from 'vue-router';// 注册插件
Vue.use(VueRouter);// 创建路由对象
const router = new VueRouter();// 将路由对象进行导出
export default router;
子组件

在组件的动态切换的过程中,我们将使用到如下组件:

Doderblue.vue

<template><div class="box"></div>
</template><script>
export default {}
</script><style scoped>.box{width: 150px;height: 150px;background-color: dodgerblue;}
</style>

Pink.vue

<template><div class="box"></div>
</template><script>
export default {}
</script><style scoped>.box{width: 150px;height: 150px;background-color: pink;}
</style>

YellowGreen.vue

<template><div class="box"></div>
</template><script>
export default {}
</script><style scoped>.box{width: 150px;height: 150px;background-color: yellowgreen;}
</style>
导入需要进行路由匹配的组件
// 导入需要建立映射关系的路由
import Dodgerblue from '@/components/Dodgerblue.vue';
import Pink from '@/components/Pink.vue';
import YellowGreen from '@/components/YellowGreen.vue';
定义路由规则

我们需要为路由与组件建立映射规则,你可以通过如下方式进行路由规则的建立。

// 创建路由对象
const router = new VueRouter({// 定义路由规则routes: [{path: '/Dodgerblue', component: Dodgerblue},{path: '/Pink', component: Pink},{path: '/YellowGreen', component: YellowGreen}]
});

其中:

项目 描述
path 用于指定路由。
component 用于指定与该路由建立映射关系的组件。
代码整合

vue-router 的配置文件中的内容最终如下:

// 导入 VueJS
import Vue from 'vue';
// 导入 vue-router
import VueRouter from 'vue-router';// 注册插件
Vue.use(VueRouter);// 导入需要建立映射关系的路由
import Dodgerblue from '@/components/Dodgerblue.vue';
import Pink from '@/components/Pink.vue';
import YellowGreen from '@/components/YellowGreen.vue';// 创建路由对象
const router = new VueRouter({// 定义路由规则routes: [{path: '/Dodgerblue', component: Dodgerblue},{path: '/Pink', component: Pink},{path: '/YellowGreen', component: YellowGreen}]
});// 将路由对象进行导出
export default router;

挂载路由

在对 vue-router 插件配置完成后,我们需要对该插件进行挂载。

import Vue from 'vue'
import App from './App.vue'
// 导入插件的配置文件 index.js
import Router from './router/index.js'Vue.config.productionTip = falsenew Vue({render: h => h(App),// 对插件进行挂载router: Router
}).$mount('#app')

注:

如果进行模块化导入时,指向的路径为一个文件夹,则将自动读取该文件夹下的 inde.js 文件。故可以通过如下方式 导入插件的配置文件 index.js

import Router from './router'

或:

import Router from './router/'

主逻辑

App.vue

<template><div class="container"><div class="controller"><!-- 使用 router-link 元素定义路由,该元素的 to 属性可用于指定链接。--><router-link to="/Dodgerblue">Dodgerblue</router-link><router-link to="/Pink">Pink</router-link><router-link to="/YellowGreen">YellowGreen</router-link></div><!-- 与路由相匹配的组件将替代 router-view 元素 --><router-view></router-view></div>
</template><script>
export default {}
</script>// 为 style 添加 scoped 属性
// 防止出现样式冲突问题。
<style scoped>/* 使用深度选择器 >>> 选中组件中的 a 元素 */>>> a{text-decoration: none;color: #fff;font-size: 14px;font-weight: 600;display: inline-block;width: 100px;height: 30px;background-color: #f40;margin-right: 8px;margin-bottom: 15px;border-radius: 3px;text-align: center;line-height: 30px;}
</style>

执行效果

重定向

从执行效果来看,在我们访问网站首页时访问的并不是首页链接 http://localhost:8080/,而是 http://localhost:8080/#/
http://localhost:8080/#/ 是使用插件 vue-router 造成的结果。在使用该插件后,访问页面首页链接将自动进行跳转。

通过定义路由规则,我们也可以自定义路由的重定向功能。接下来,我们将通过定义路由规则使得访问首页后跳转到链接 http://localhost:8080/#/Dodgerblue

请将路由插件配置文件 index.js 中的对应内容替换为如下内容

// 创建路由对象
const router = new VueRouter({// 定义路由规则routes: [{path: '/Dodgerblue', component: Dodgerblue},{path: '/Pink', component: Pink},{path: '/YellowGreen', component: YellowGreen},// 添加路由规则实现路由重定向功能{path: '/', redirect: '/Dodgerblue'}]
});

其中:

项目 描述
path 指定需要进行重定向的路径。
redirect 指定重定向后需要跳转到的路径。

执行效果

更换相应内容后重新执行 Vue 项目,你将得到如下效果:

VueJS 官方路由之 Vue Router相关推荐

  1. 已解决vue-router4路由报“[Vue Router warn]: No match found for location with path“

    vue-router4动态加载的模式下,当我们在当前页面刷新浏览器时,会出现一个警告 [Vue Router warn]: No match found for location with path ...

  2. Vue Router 路由管理

    文章目录 Vue Router 路由管理 概述 安装 简单使用 定义2个组件 定义路由信息 支持路由 使用路由 动态路由 配置动态路由 配置404 限制动态参数 嵌套路由 命名路由 编程式导航 简单使 ...

  3. Vue Router 命名路由、(嵌套)命名视图

    命名路由 在Vue Router中 除了 path 之外,还可以为任何路由提供 name. const routes = [{path: '/user/:username',name: 'user', ...

  4. Vue2.x - Vue Router

    目录 Vue与SPA 什么是SPA 简单了解SPA 什么是MPA SPA相较于MPA的优点 实现SPA的几个关键点 理解SPA单页面架构 什么是前端路由 锚链接与URL中的hash值 通过hashch ...

  5. Vue Router 原理分析与实现

    陈丹青:看过的东西走过的路,还有你所经历的一切,都会经历一个开眼界的过程. 但眼界开了并不是一件好事情,反而顿悟之后从此你就会知道,你在社会之中是完全没有位置可言的.我算个屁,什么事都有人做过,都有人 ...

  6. Vue | Vue Router 路由的使用

    文章目录 一.路由的基本使用 1.创建 Vue 项目并引入 vue-router 2.编写 Components 组件 3.编写路由文件 4.在主文件 Main.js 中引入路由 5.添加 route ...

  7. Vue Router 实现路由控制实战

    本文是我在学习过程中记录学习的点点滴滴,目的是为了学完之后巩固一下顺便也和大家分享一下,日后忘记了也可以方便快速的复习. Vue Router 实现路由控制实战 前言 一.什么是单页面应用及实现前端路 ...

  8. Vue学习笔记(六)--- 前端路由 Vue Router

    一.路由 1.概念 ​ 路由本质上来说就是一种对应关系,比如说我们在浏览器中输入不同的 url 地址,我们就能访问不同的资源,那么这 url 地址与资源之间的对应关系,就是路由. 2.分类 ① 后端路 ...

  9. Vue Router系列之详解路由守卫

    文章の目录 1.路由守卫是什么 2.导航守卫分类 2.1.全局守卫 2.1.1.全局前置守卫beforeEach 2.1.2.全局解析守卫beforeResolve(2.5.0 新增) 2.1.3.全 ...

最新文章

  1. Python加密—RSA加密
  2. 微信小程序把玩(二十七)audio组件
  3. android nougat和安卓7.1,Android Nougat 7.1.2 先睹为快
  4. CSS实现多栏布局的几种方式
  5. struts2+json(3)
  6. MyBatis使用总结+整合Spring
  7. [python]SM4算法实现
  8. C++实现16进制和字符串的转换
  9. 发送手机验证码登录(使用榛子云短信平台)
  10. 计算机系统的日常运行维护,浅谈计算机系统的日常维护管理
  11. 排序算法图解(一):冒泡排序与冒泡排序的优化
  12. ps制作动态html,PS制作动态海报教程
  13. 【社会网络分析图】python实现
  14. 关于Raster的理解
  15. 最新版本微信小程序开发工具的使用
  16. isNaN()和isFinite()的应用
  17. 企业实战, java、spingboot微信扫码支付,页面生成微信二维码,微信扫码付款,websocket通知,处理订单!复制粘贴代码直接开干
  18. 深度学习中各种图像库的图片读取方式
  19. SharePoint 集成PowerApps和Flow教程(二,第一个PowerApps程序)
  20. java商场购物幸运客户练习题_JAVA基础语法练习(一)

热门文章

  1. 利用电脑玩android版天天连萌刷高分 二,利用计算机玩Android版“天天连萌”刷高分(四)——模拟按键及程序优化...
  2. 基于Matlab的BP神经网络识别26个英文字母
  3. 白鹭小游戏-成语挑战-游戏页面-字块
  4. 一些linux嵌入式资源下载地址
  5. (建议精读)灵魂之力—提升学习效率 99% 的私藏秘籍全公开
  6. 【React-Native】- 红米/安卓手机Text文字显示不全及全局字体
  7. JS导出Word默认页面视图、横向、分栏、设置固定页眉显示
  8. PostgreSQL安装配置参考文档
  9. 【笔试题】百度+美团
  10. postgres批量新增,修改