Vue2【前端路由的概念与原理、vue-router 的基本用法、vue-router 的常见用法、后台管理案例】

news2024/10/6 8:30:41

文章目录

  • 前端路由的概念与原理
    • 1. 什么是路由
    • 3. SPA 与前端路由
    • 4. 什么是前端路由
    • 5. 前端路由的工作方式
    • 6. 实现简易的前端路由
      • 步骤1:通过 **\<component\>** 标签,结合 **comName** 动态渲染组件。示例代码如下:
      • 步骤2:在 App.vue 组件中,为 \<a\> 链接添加对应的 hash 值:
      • 步骤3:在 created 生命周期函数中,监听浏览器地址栏中 hash 地址的变化,动态切换要展示的组件的名称:
  • vue-router 的基本用法
    • 1. 什么是 vue-router
    • 2. vue-router 安装和配置的步骤
      • 2.1 在项目中安装 vue-router
      • 2.2 创建路由模块
      • 2.3 导入并挂载路由模块
      • 2.4 声明路由链接和占位符
    • 3. 声明路由的匹配规则
  • vue-router 的常见用法
    • 1. 路由重定向
    • 2. 嵌套路由
      • 3.1 声明子路由链接和子路由占位符
      • 3.2 通过 children 属性声明子路由规则
    • 4. 动态路由匹配
      • 4.1 动态路由的概念
      • 4.2 $route.params 参数对象
      • 4.3 使用 props 接收路由参数
      • 扩展query和fullPath
    • 5. 声明式导航 & 编程式导航
      • 5.1 vue-router 中的编程式导航 API
      • 5.2 $router.push
      • 5.3 $router.replace
      • 5.4 $router.go
      • 5.5 $router.go 的简化用法
    • 6. 导航守卫
      • 6.1 全局前置守卫
      • 6.2 守卫方法的 3 个形参
      • 6.3 next 函数的 3 种调用方式
      • 6.4 控制后台主页的访问权限
  • 后台管理案例
    • 1. 案例效果
      • 1. 案例效果
    • 2. 案例用到的知识点
  • 总结


前端路由的概念与原理

1. 什么是路由

路由(英文:router)就是对应关系

3. SPA 与前端路由

SPA 指的是一个 web 网站只有唯一的一个 HTML 页面,所有组件的展示与切换都在这唯一的一个页面内完成。

此时,不同组件之间的切换需要通过前端路由来实现。

结论:在 SPA 项目中,不同功能之间的切换,要依赖于前端路由来完成

4. 什么是前端路由

通俗易懂的概念:Hash 地址组件之间的对应关系

5. 前端路由的工作方式

① 用户点击了页面上的路由链接
② 导致了 URL 地址栏中的 Hash 值发生了变化
前端路由监听了到 Hash 地址的变化
④ 前端路由把当前 Hash 地址对应的组件渲染都浏览器中
在这里插入图片描述
结论:前端路由,指的是 Hash 地址与组件之间的对应关系!

6. 实现简易的前端路由

步骤1:通过 <component> 标签,结合 comName 动态渲染组件。示例代码如下:

在这里插入图片描述

步骤2:在 App.vue 组件中,为 <a> 链接添加对应的 hash 值:

在这里插入图片描述

步骤3:在 created 生命周期函数中,监听浏览器地址栏中 hash 地址的变化,动态切换要展示的组件的名称:

在这里插入图片描述

vue-router 的基本用法

1. 什么是 vue-router

vue-router 是 vue.js 官方给出的路由解决方案。它只能结合 vue 项目进行使用,能够轻松的管理 SPA 项目中组件的切换。
vue-router 的官方文档地址:https://router.vuejs.org/zh/

2. vue-router 安装和配置的步骤

① 安装 vue-router 包
创建路由模块
③ 导入并挂载路由模块
④ 声明路由链接占位符

2.1 在项目中安装 vue-router

在 vue2 的项目中,安装 vue-router 的命令如下:
在这里插入图片描述

2.2 创建路由模块

src 源代码目录下,新建 router/index.js 路由模块,并初始化如下的代码:
在这里插入图片描述

2.3 导入并挂载路由模块

在 src/main.js 入口文件中,导入并挂载路由模块。示例代码如下:
在这里插入图片描述

2.4 声明路由链接和占位符

在 src/App.vue 组件中,使用 vue-router 提供的 <router-link> 和 <router-view> 声明路由链接和占位符:
在这里插入图片描述

3. 声明路由的匹配规则

在 src/router/index.js 路由模块中,通过 routes 数组声明路由的匹配规则。示例代码如下:
在这里插入图片描述

vue-router 的常见用法

1. 路由重定向

路由重定向指的是:用户在访问地址 A 的时候,强制用户跳转到地址 C ,从而展示特定的组件页面。

通过路由规则的 redirect 属性,指定一个新的路由地址,可以很方便地设置路由的重定向:
在这里插入图片描述

2. 嵌套路由

通过路由实现组件的嵌套展示,叫做嵌套路由。
在这里插入图片描述

3.1 声明子路由链接和子路由占位符

About.vue 组件中,声明 tab1 和 tab2 的子路由链接以及子路由占位符。示例代码如下:
在这里插入图片描述

3.2 通过 children 属性声明子路由规则

在 src/router/index.js 路由模块中,导入需要的组件,并使用 children 属性声明子路由规则:
在这里插入图片描述

4. 动态路由匹配

思考:有如下 3 个路由链接:
在这里插入图片描述

定义如下 3 个路由规则,是否可行???
在这里插入图片描述

缺点:路由规则的复用性差

4.1 动态路由的概念

动态路由指的是:把 Hash 地址中可变的部分定义为参数项,从而提高路由规则的复用性
在 vue-router 中使用**英文的冒号(:)**来定义路由的参数项。示例代码如下:
在这里插入图片描述

4.2 $route.params 参数对象

动态路由渲染出来的组件中,可以使用 this.$route.params 对象访问到动态匹配的参数值
在这里插入图片描述

4.3 使用 props 接收路由参数

为了简化路由参数的获取形式,vue-router 允许在路由规则中开启 props 传参。示例代码如下:
在这里插入图片描述

扩展query和fullPath

在这里插入图片描述

在这里插入图片描述

5. 声明式导航 & 编程式导航

在浏览器中,点击链接实现导航的方式,叫做声明式导航。例如:
⚫ 普通网页中点击 <a> 链接、vue 项目中点击 <router-link> 都属于声明式导航

在浏览器中,调用 API 方法实现导航的方式,叫做编程式导航。例如:
⚫ 普通网页中调用 location.href 跳转到新页面的方式,属于编程式导航

5.1 vue-router 中的编程式导航 API

vue-router 提供了许多编程式导航的 API,其中最常用的导航 API 分别是:
① this.$router.push(‘hash 地址’)
⚫ 跳转到指定 hash 地址,并增加一条历史记录

② this.$router.replace(‘hash 地址’)
⚫ 跳转到指定的 hash 地址,并替换掉当前的历史记录

③ this.$router.go(数值 n)
⚫ 实现导航历史前进、后退

5.2 $router.push

调用 this.$router.push() 方法,可以跳转到指定的 hash 地址,从而展示对应的组件页面。示例代码如下:
在这里插入图片描述

5.3 $router.replace

调用 this.$router.replace() 方法,可以跳转到指定的 hash 地址,从而展示对应的组件页面。

push 和 replace 的区别:
⚫ push 会增加一条历史记录
⚫ replace 不会增加历史记录,而是替换掉当前的历史记录

5.4 $router.go

调用 this.$router.go() 方法,可以在浏览历史中前进和后退。示例代码如下:
在这里插入图片描述

5.5 $router.go 的简化用法

在实际开发中,一般只会前进和后退一层页面。因此 vue-router 提供了如下两个便捷方法:
① $router.back()
⚫ 在历史记录中,后退到上一个页面
② $router.forward()
⚫ 在历史记录中,前进到下一个页面

6. 导航守卫

导航守卫可以控制路由的访问权限。示意图如下:
在这里插入图片描述

6.1 全局前置守卫

每次发生路由的导航跳转时,都会触发全局前置守卫。因此,在全局前置守卫中,程序员可以对每个路由进行访问权限的控制:
在这里插入图片描述

6.2 守卫方法的 3 个形参

全局前置守卫的回调函数中接收 3 个形参,格式为:
在这里插入图片描述

6.3 next 函数的 3 种调用方式

参考示意图,分析 next 函数的 3 种调用方式最终导致的结果:
在这里插入图片描述

当前用户拥有后台主页的访问权限,直接放行:next()
当前用户没有后台主页的访问权限,强制其跳转到登录页面:next(‘/login’)
当前用户没有后台主页的访问权限,不允许跳转到后台主页:next(false)

6.4 控制后台主页的访问权限

在这里插入图片描述

后台管理案例

1. 案例效果

后台管理案例

1. 案例效果

在这里插入图片描述
在这里插入图片描述

2. 案例用到的知识点

⚫ 命名路由
⚫ 路由重定向
⚫ 导航守卫
⚫ 嵌套路由
⚫ 动态路由匹配
⚫ 编程式导航

总结

① 能够知道如何在 vue 中配置路由

  • ⚫ createRouter、app.use(router)

② 能够知道如何使用嵌套路由

  • ⚫ 通过 children 属性进行路由嵌套

③ 能够知道如何实现动态路由匹配

  • ⚫ 使用冒号声明参数项、this**.$route**.params、props: true

④ 能够知道如何使用编程式导航

  • ⚫ this.$router.push、this.$router.go

⑤ 能够知道如何使用导航守卫

  • ⚫ 路由实例.beforeEach((to, from, next) => { /* 必须调 next 函数 */ })

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/14317.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Xcode Cloud

一、使用Xcode Cloud 的要求 &#xff08;1&#xff09;开发者账户要求 已加入Apple Developer Program向xcode加入Apple IDApp Store Connect上有app 记录或者可以创建一个app记录 &#xff08;2&#xff09;Project和workspace要求 Project或者workspace使用Xcode项目使用…

JavaScript基础语法

JavaScript基础语法 文章目录JavaScript基础语法1.JavaScript的基本认知1.1 JS的介绍与组成1.2 JS代码使用格式2.JavaScript的注释与输入输出语句2.1 JS的注释方法2.2 JS的输入输出语句3.JavaScript的变量3.1 JS的变量初始化3.2 JS的声明变量特殊情况3.3 JS的变量命名规则4.Jav…

Windows版本Anaconda安装教程

1、点击安装包&#xff0c;右键-以管理员身份运行安装文件&#xff0c;如图所示&#xff1a; 2、直接点击next即可 3、接着进入到许可协议的界面&#xff0c;这里点击I agree选项&#xff0c;也就是我同意的意思。 4、接着进入到用户选择的界面&#xff0c;选择all users选项&a…

面试官的灵魂质问—什么是转发与重定向

文章目录 文章目录文章目录[toc]一、什么是HttpServletRequest、HttpServletReSponse&#xff1f;二、Servlet中HttpServletRequest[源码](https://so.csdn.net/so/search?q源码&spm1001.2101.3001.7020)分析获取客户端传递的参数请求转发三、Servlet中HttpServletReSpons…

HTML网页设计结课作业——基于HTML+CSS仿学校官网页面

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

【保姆级】新机器部署Nacos

1、登录服务器&#xff0c;如果非root用户则切root用户 sudo su - 2、在/usr/tmp目录上传nacos安装包 3、将安装包移到/usr/local/目录 mv nacos-server-2.0.3.tar.gz /usr/local/ 4、解压 tar -zxvf nacos-server-2.0.3.tar.gz 5、创建nacos数据库&#xff0c;执行官网SQL建…

vc中调用matlab生成的动态库

开发环境&#xff1a; vs2010 matlab r2016a 步骤一&#xff1a;matlab中生成动态库 创建文本文件 D:\matlabTest\myadd.m&#xff0c;文件内容参看下面代码部分。注意&#xff1a;如果把myadd.m文件直接放在d盘根目录下&#xff0c;matlab中编译生成动态库时&#xff0c;会…

JavaScript--跟随pink老师视频学习版 (2022)

JavaScript一、JavaScript简介1.什么是JavaScript2.JavaScript用途3.浏览器执行JavaScript简介3.JavaScript组成1.ECMAScript2.DOM3.BOM4.JavaScript代码位置1.行内2.内嵌3.外部引入5.JavaScript输入输出语句二、JavaScript变量1.什么是变量2.变量使用3.变量命名规范三、数据类…

DBCO-NH2,DBCO-Amine 实验室 杂氮二苯并环辛炔-胺 1255942-06-3

DBCO(二苯并环辛炔) 的羧基和琥珀酰亚胺酯衍生物&#xff0c;可与带有胺基的生化小分子形成稳定的酰胺键连接。 胺官能团的环辛炔衍生物。环辛炔可用于菌株促进的无铜叠氮化物-炔烃环加成反应。该二苯并环辛炔可在不需要Cu&#xff08;I&#xff09;催化剂的情况下&#xff0c…

TCP/IP网络编程(10) IO函数

在Linux下&#xff0c;一般使用read & write函数完成数据IO&#xff0c;因为Linux下的套接字&#xff0c;可视为文件&#xff0c;其操作方式与文件类似&#xff0c;当套接字分配之后&#xff0c;会为其分配对应的文件描述符。在Windows下&#xff0c;则需要使用recv & …

[oeasy]python0016_编码_encode_编号_字节_计算机

编码(encode) 回忆上次内容 上次找到了字符和字节状态之间的映射对应关系 字符对应着二进制字节二进制字节也对应着字符 这种字节状态是用2位16进制数来表示的hex(n)可以把数字转化为 ​​16进制​​字符串 hexadecimal bin(n)可以把数字转化为 ​​2进制​​字符串 integer …

显示控件——AV输入显示

通过修改变量地址打开或者关闭AV显示&#xff0c;需要硬件支持。 位置信息&#xff1a;控件在工程页面区域的位置 “X”“Y”为控件区域左上角坐标。 “W”“H”为控件区域宽度和高度&#xff0c;单位为像素点。 名称&#xff1a;默认为AVInputView,可以重新设置。 叙述指针…

生产制造管理系统对中小型企业的作用有哪些?

随着企业数字化转型的概念深入人心&#xff0c;传统生产制造企业也渐渐重视起来了。对于资金雄厚的大型生产制造企业而言&#xff0c;企业数字化转型还是比较可以快速适用并且付出行动。而对于很多的中小型企业而言&#xff0c;对于企业数字化转型则没那么重视&#xff0c;甚至…

Beam failure Recovery

微信同步更新欢迎关注同名modem协议笔记 这篇来看BFR 过程&#xff0c;这里把38.300中对于BFD和BFR流程的描述再贴一遍。 BFD 发生在Pcell时: UE 通过在Pcell上进行RA 过程来触发BFR&#xff1b;UE 要选择suitable beam去进行BFR&#xff08;如果gNB 配置了某些beams 的dedica…

NodeJs实战-待办列表(2)-待办列表增删

NodeJs实战-待办列表-增删改查项目结构增加表单提交事件修改 index.htmlNodeJS 服务端增删改查修改 server.js效果图初始页面输入 1111&#xff0c;点击添加输入 1111 点击完成项目结构 增加表单提交事件 修改 index.html 引入 jquery <script type"text/javascript…

对抗生成网络GAN系列——f-AnoGAN原理及缺陷检测实战

&#x1f34a;作者简介&#xff1a;秃头小苏&#xff0c;致力于用最通俗的语言描述问题 &#x1f34a;专栏推荐&#xff1a;深度学习网络原理与实战 &#x1f34a;近期目标&#xff1a;写好专栏的每一篇文章 &#x1f34a;支持小苏&#xff1a;点赞&#x1f44d;&#x1f3fc;、…

[iOS- Mac终端上传Git and 生成Token]

前言 我先写了如何上传的每一步&#xff0c;都有截图&#xff0c;在文章的后面写了出现的问题&#xff0c;即网上找到的解决方法&#xff01;&#xff01;&#xff01;谨以此篇博客纪念我忙了一个晚上的麻烦 累死个人 首先要配置好git 这里不多说了Mac上传Git 搞了我一下午晚…

异常检测 | MATLAB实现基于支持向量机和孤立森林的数据异常检测(结合t-SNE降维和DBSCAN聚类)

异常检测 | MATLAB实现基于支持向量机和孤立森林的数据异常检测(结合t-SNE降维和DBSCAN聚类) 目录 异常检测 | MATLAB实现基于支持向量机和孤立森林的数据异常检测(结合t-SNE降维和DBSCAN聚类)效果一览基本介绍模型准备模型设计参考资料效果一览 基本介绍 提取有用的特征,机器…

遨博机械臂——ROS通讯机制

文章目录知识目标1. 遨博机械臂SDK二次开发接口2. 机械臂MoveIt!低级控制器配置3. aubo ROS中间件通讯机制知识目标 学习遨博机械臂SDK开发常用接口&#xff1b;学习MoveIt!功能包中机械臂控制器的配置通用流程&#xff1b;学习遨博ROS驱动与底层SDK与上层move_group之间的通讯…

记录一次成功的frida编译

长期接手python外包和爬虫&#xff0c;私聊哦 文章目录前言一、Frida是什么&#xff1f;二、Frida一些资源相关三、Frida源码编译准备1.安装包准备2.环境变量配置四、开始编译源码结束前言 某社交平台X信的风控越发恶心&#xff0c;目前面临项目被砍的风险&#xff0c;做了n多…