VueJS 官方路由之 Vue Router
文章目录
- 参考
- 描述
- 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相关推荐
- 已解决vue-router4路由报“[Vue Router warn]: No match found for location with path“
vue-router4动态加载的模式下,当我们在当前页面刷新浏览器时,会出现一个警告 [Vue Router warn]: No match found for location with path ...
- Vue Router 路由管理
文章目录 Vue Router 路由管理 概述 安装 简单使用 定义2个组件 定义路由信息 支持路由 使用路由 动态路由 配置动态路由 配置404 限制动态参数 嵌套路由 命名路由 编程式导航 简单使 ...
- Vue Router 命名路由、(嵌套)命名视图
命名路由 在Vue Router中 除了 path 之外,还可以为任何路由提供 name. const routes = [{path: '/user/:username',name: 'user', ...
- Vue2.x - Vue Router
目录 Vue与SPA 什么是SPA 简单了解SPA 什么是MPA SPA相较于MPA的优点 实现SPA的几个关键点 理解SPA单页面架构 什么是前端路由 锚链接与URL中的hash值 通过hashch ...
- Vue Router 原理分析与实现
陈丹青:看过的东西走过的路,还有你所经历的一切,都会经历一个开眼界的过程. 但眼界开了并不是一件好事情,反而顿悟之后从此你就会知道,你在社会之中是完全没有位置可言的.我算个屁,什么事都有人做过,都有人 ...
- Vue | Vue Router 路由的使用
文章目录 一.路由的基本使用 1.创建 Vue 项目并引入 vue-router 2.编写 Components 组件 3.编写路由文件 4.在主文件 Main.js 中引入路由 5.添加 route ...
- Vue Router 实现路由控制实战
本文是我在学习过程中记录学习的点点滴滴,目的是为了学完之后巩固一下顺便也和大家分享一下,日后忘记了也可以方便快速的复习. Vue Router 实现路由控制实战 前言 一.什么是单页面应用及实现前端路 ...
- Vue学习笔记(六)--- 前端路由 Vue Router
一.路由 1.概念 路由本质上来说就是一种对应关系,比如说我们在浏览器中输入不同的 url 地址,我们就能访问不同的资源,那么这 url 地址与资源之间的对应关系,就是路由. 2.分类 ① 后端路 ...
- Vue Router系列之详解路由守卫
文章の目录 1.路由守卫是什么 2.导航守卫分类 2.1.全局守卫 2.1.1.全局前置守卫beforeEach 2.1.2.全局解析守卫beforeResolve(2.5.0 新增) 2.1.3.全 ...
最新文章
- Python加密—RSA加密
- 微信小程序把玩(二十七)audio组件
- android nougat和安卓7.1,Android Nougat 7.1.2 先睹为快
- CSS实现多栏布局的几种方式
- struts2+json(3)
- MyBatis使用总结+整合Spring
- [python]SM4算法实现
- C++实现16进制和字符串的转换
- 发送手机验证码登录(使用榛子云短信平台)
- 计算机系统的日常运行维护,浅谈计算机系统的日常维护管理
- 排序算法图解(一):冒泡排序与冒泡排序的优化
- ps制作动态html,PS制作动态海报教程
- 【社会网络分析图】python实现
- 关于Raster的理解
- 最新版本微信小程序开发工具的使用
- isNaN()和isFinite()的应用
- 企业实战, java、spingboot微信扫码支付,页面生成微信二维码,微信扫码付款,websocket通知,处理订单!复制粘贴代码直接开干
- 深度学习中各种图像库的图片读取方式
- SharePoint 集成PowerApps和Flow教程(二,第一个PowerApps程序)
- java商场购物幸运客户练习题_JAVA基础语法练习(一)
热门文章
- 利用电脑玩android版天天连萌刷高分 二,利用计算机玩Android版“天天连萌”刷高分(四)——模拟按键及程序优化...
- 基于Matlab的BP神经网络识别26个英文字母
- 白鹭小游戏-成语挑战-游戏页面-字块
- 一些linux嵌入式资源下载地址
- (建议精读)灵魂之力—提升学习效率 99% 的私藏秘籍全公开
- 【React-Native】- 红米/安卓手机Text文字显示不全及全局字体
- JS导出Word默认页面视图、横向、分栏、设置固定页眉显示
- PostgreSQL安装配置参考文档
- 【笔试题】百度+美团
- postgres批量新增,修改