【VUE】 深入理解 Vue 动态路由:简介、实际开发场景与代码示例
深入理解 Vue 动态路由:简介、实际开发场景与代码示例
Vue.js 是一个用于构建用户界面的渐进式框架,它拥有丰富的生态系统,其中 Vue Router 是其官方的路由管理库。动态路由是 Vue Router 的一个强大特性,允许我们在应用运行时根据需要动态添加或修改路由。本文将深入介绍 Vue 动态路由,从简介到实际开发场景,再到代码示例,全面解析这一强大工具的使用。
动态路由简介
在传统的路由配置中,我们需要在初始化 Vue 实例时定义所有的路由。但在实际应用中,特别是涉及权限管理、模块懒加载等场景,我们可能需要根据用户的权限或其它条件动态添加或修改路由。Vue Router 提供的动态路由功能正是为了解决这些问题。
动态路由的基础概念
动态路由允许我们在应用运行时,通过编程方式来添加或修改路由。常用的方法包括:
router.addRoute(): 添加新的路由配置。router.removeRoute(): 移除已有的路由配置(Vue Router 4.0+ 支持)。router.hasRoute(): 检查路由是否存在。
实际开发场景
场景一:基于权限的路由管理
在许多应用中,不同用户可能有不同的访问权限。管理员可以访问管理面板,普通用户则不能。这时,我们可以在用户登录后,根据其权限动态添加或移除路由。
场景二:模块懒加载
对于大型应用,为了优化性能,我们可以按需加载不同模块的路由。在用户访问某个模块时,再动态添加该模块的路由配置。
场景三:多级菜单动态生成
在一些后台管理系统中,菜单项和对应的路由可能是动态生成的。我们可以根据后台返回的菜单配置,动态生成对应的路由。
代码示例
安装 Vue Router
首先,确保已经安装了 Vue Router:
npm install vue-router
配置基础路由
我们先配置一些基础路由,例如 Home 和 About 页面:
// router.js
import Vue from 'vue';
import Router from 'vue-router';
import Home from '@/components/Home.vue';
import About from '@/components/About.vue';Vue.use(Router);const router = new Router({mode: 'history',routes: [{path: '/',name: 'Home',component: Home},{path: '/about',name: 'About',component: About}]
});export default router;
动态添加路由
假设我们有一个新的组件 Profile,需要在用户登录后动态加载:
import Profile from '@/components/Profile.vue';// 动态添加路由的方法
router.addRoute({path: '/profile',name: 'Profile',component: Profile
});
动态添加嵌套路由
如果需要在某个路由下动态添加嵌套路由,可以使用 addRoute 方法并指定父路由的 name:
router.addRoute('ParentRouteName', {path: 'child',name: 'ChildRouteName',component: () => import('@/components/Child.vue')
});
示例:动态路由完整实现
以下是一个完整示例,展示如何在 Vue 应用中使用动态路由:
// main.js
import Vue from 'vue';
import App from './App.vue';
import router from './router';Vue.config.productionTip = false;new Vue({router,render: h => h(App)
}).$mount('#app');// router.js
import Vue from 'vue';
import Router from 'vue-router';
import Home from '@/components/Home.vue';
import About from '@/components/About.vue';Vue.use(Router);const router = new Router({mode: 'history',routes: [{path: '/',name: 'Home',component: Home},{path: '/about',name: 'About',component: About}]
});export default router;// 动态添加路由
function loadDynamicRoutes() {const permissions = ['home', 'about', 'profile']; // 示例权限列表permissions.forEach(permission => {if (permission === 'profile') {router.addRoute({path: '/profile',name: 'Profile',component: () => import('@/components/Profile.vue')});}});
}// 调用函数加载动态路由
loadDynamicRoutes();// 组件示例
// Profile.vue
<template><div><h1>Profile Page</h1></div>
</template><script>
export default {name: 'Profile'
};
</script>
路由守卫中的动态路由
可以在路由守卫中动态添加路由,例如在全局守卫中:
router.beforeEach((to, from, next) => {// 这里假设我们在用户登录后动态加载路由if (!router.hasRoute('Profile') && userIsLoggedIn()) {router.addRoute({path: '/profile',name: 'Profile',component: () => import('@/components/Profile.vue')});}next();
});
相关文章:
【VUE】 深入理解 Vue 动态路由:简介、实际开发场景与代码示例
深入理解 Vue 动态路由:简介、实际开发场景与代码示例 Vue.js 是一个用于构建用户界面的渐进式框架,它拥有丰富的生态系统,其中 Vue Router 是其官方的路由管理库。动态路由是 Vue Router 的一个强大特性,允许我们在应用运行时根…...
Linux x86_64平台指令替换函数 text_poke_smp/bp
文章目录 前言一、text_poke_early1.1 text_poke_early简介1.2 用途 二、text_poke_smp2.1 简介2.1.1 text_poke_smp函数2.2.2 stop_machine_text_poke简介2.2.3 text_poke函数 2.2 用途 三、text_poke_smp 内核hook 前言 Linux x86_64平台指令替换函数有两种类型:…...
海南云亿商务咨询有限公司口碑怎么样?
在数字化浪潮席卷全球的今天,电商行业正以前所未有的速度发展。抖音作为短视频领域的佼佼者,其电商功能更是为众多品牌和企业打开了全新的销售渠道。海南云亿商务咨询有限公司,作为抖音电商服务领域的佼佼者,正以其专业的服务和创…...
航空数据管控系统-②项目分析与设计:任务2:使用Git或SVN管理项目(可选任务,只介绍Git安装)
任务描述 1、安装Git 2、注册GitHub 3、配置本地库 4、配置远程库 5、使用Git管理项目 任务指导 分为以下几个部分完成: 学会Git的安装,帐号注册本地存储库的管理自己创建一个项目,项目名称为自己的名字,上传到代码仓库ÿ…...
【面试题】串联探针和旁挂探针有什么区别?
在网络安全领域中,串联探针和旁挂探针(通常也被称为旁路探针)是两种不同部署方式的监控设备,它们各自具有独特的特性和应用场景。以下是它们之间的主要区别: 部署方式 串联探针:串联探针一般通过网关或者…...
LeetCode42(接雨水)[三种解法:理解动态规划,双指针,单调栈]
接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 这是一道困难题,难度确实有点层次.我们先来朴素思想走一波. 要求能接多少雨水,我们可以具化到每个硅谷,每个硅谷能存多少雨水,那么答案就是每个…...
STM32-ADC+DMA
本内容基于江协科技STM32视频学习之后整理而得。 文章目录 1. ADC模拟-数字转换器1.1 ADC模拟-数字转换器1.2 逐次逼近型ADC1.3 ADC框图1.4 ADC基本结构1.5 输入通道1.6 规则组的转换模式1.6.1 单次转换,非扫描模式1.6.2 连续转换,非扫描模式1.6.3 单次…...
代码随想录算法训练营第六十二天 | 108. 冗余连接、109. 冗余连接II、复习
108. 冗余连接 题目链接:https://kamacoder.com/problempage.php?pid1181 文档讲解:https://www.programmercarl.com/kamacoder/0108.%E5%86%97%E4%BD%99%E8%BF… 思路 从前向后遍历每一条边(因为优先让前面的边连上)࿰…...
昇思MindSpore学习笔记6-01LLM原理和实践--FCN图像语义分割
摘要: 记录MindSpore AI框架使用FCN全卷积网络理解图像进行图像语议分割的过程、步骤和方法。包括环境准备、下载数据集、数据集加载和预处理、构建网络、训练准备、模型训练、模型评估、模型推理等。 一、概念 1.语义分割 图像语义分割 semantic segmentation …...
【FFMPEG基础(一)】解码源码
学习分享 main函数decodetorgb32.h 文件decodetorgb32 .cpp文件 main函数 #include <QApplication> #include "decodetorgb32.h" int main(int argc, char *argv[]) {QApplication a(argc, argv);DecodeToRGB32 toRGB32;int restoRGB32.openVideo("../fi…...
第二证券股市资讯:深夜!突然暴涨75%!
一则重磅收买引发医药圈轰动。 北京时间7月8日晚间,美股开盘后,美国生物制药公司Morphic股价一度暴升超75%。音讯面上,生物医药巨子礼来公司官宣,将以57美元/股的价格现金收买Morphic,较上星期五的收盘价溢价79%&…...
flutter 使用wechat_assets_picker的权限检测
https://pub.dev/packages/wechat_assets_picker AssetPicker.pickAssets之前进行权限检查 pickImages() async {try {if (PermissionState.authorized ! await AssetPicker.permissionCheck()) {PermissionUtil.showAllPermissions(Permission.storage, 1);return;}final Lis…...
Mojo入门案例教程(上手篇)
以下是 Mojo 编程语言入门案例教程,内容包括 Mojo 的基本概念、变量、控制结构、函数等方面: Mojo 的基本概念 1.什么是 Mojo?:Mojo 是一种函数式编程语言,用于开发小型应用程序、脚本和工具。 2.Mojo 的特点&#x…...
如何在window执行mkfile
1、Windows cmd中出现错误:“‘make‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。”的解决方法_windows_是板栗啊-GitCode 开源社区 2、安装cmder,再通过包管理工具下载make...
Nginx 是一个非常流行的 Web 服务器和反向代理服务器
Nginx 是一个非常流行的 Web 服务器和反向代理服务器,以其高性能、稳定性、丰富的功能集和低资源消耗而闻名。下面是一个简化的 Nginx 使用教程,包括基本的安装、配置和一些常见用途。 安装 Nginx 在 Ubuntu/Debian 上安装: sudo apt upda…...
mysql怎么调整缓冲区大小
MySQL中调整缓冲区大小是数据库性能优化的重要一环。缓冲区大小直接影响了数据库的读写性能和响应速度。以下是一些常见的MySQL缓冲区及其调整方法: 一、InnoDB缓冲池(InnoDB Buffer Pool) InnoDB缓冲池是InnoDB存储引擎用来缓存表数据和索…...
计算机组成原理学习笔记(一)
计算机组成原理 [类型:: [[计算机基础课程]] ] [来源:: [[B站]] ] [主讲人:: [[咸鱼学长]] ] [评价:: ] [知识点:: [[系统软件]] & [[应用软件]] ] [简单解释:: 管理计算机系统的软件; 按照任务需要编写的程序 ] [问题:: ] [知识点:: [[机器字长]] ] [简单…...
Vue3 对跳转 同一路由传入不同参数的页面分别进行缓存
1:使用场景 从列表页跳转至不同的详情页面,对这些详情页面分别进行缓存 2:核心代码 2.1: 配置路由文件 在路由文件里对需要进行缓存的路由对象添加meta 属性 // 需要缓存的详情页面路由 { name: detail, path: /myRouter/detail…...
LinearLayout的测量流程
在日常开发中我们常常使用LinearLayout作为布局Group,本文从其源码实现出发分析测量流程。大家可以带着问题进入下面的分析流程,看看是否能找到答案。 垂直测量 View的测量入口方法是onmeasure方法。LinearLayout的onMeasure方法根据其方向而做不同的处…...
数据无忧:Ubuntu 系统迁移备份全指南
唠唠闲话 最近电脑出现了一些故障,送修期间,不得不在实验室的台式机上重装系统,配环境的过程花费了不少时间。为避免未来处理类似事情时耗费时间,特此整理一些备份策略。 先做以下准备: U盘启动盘,参考 …...
AI大模型产品经理零基础到进阶学习路线图,非常详细收藏我这一篇就够了
AI产品经理区别于普通产品经理的地方,不止在懂得AI算法,更重要的是具有AI思维。 人工智能产品设计要以操作极度简单为标准,但是前端的简单代表后端的复杂,系统越复杂,才能越智能。 同样,人工智能的发展依…...
Qwen2.5-14B-Instruct开源大模型实战:像素剧本圣殿8-Bit UI部署详解
Qwen2.5-14B-Instruct开源大模型实战:像素剧本圣殿8-Bit UI部署详解 1. 项目概览 像素剧本圣殿(Pixel Script Temple)是一款基于Qwen2.5-14B-Instruct大模型深度微调的专业剧本创作工具。这个独特的创作环境将强大的AI推理能力与复古8-Bit视…...
GTE-Base-ZH模型服务监控与运维:使用Prometheus和Grafana
GTE-Base-ZH模型服务监控与运维:使用Prometheus和Grafana 当你把GTE-Base-ZH模型部署上线,开始对外提供服务后,心里是不是总有点不踏实?服务现在运行得怎么样?有没有人用?响应快不快?服务器资源…...
飞腾FT2000/4外部中断开发避坑指南:如何高效处理16个中断信号
飞腾FT2000/4外部中断开发避坑指南:如何高效处理16个中断信号 在嵌入式系统开发中,中断处理机制的设计往往直接决定了系统的实时性和可靠性。飞腾FT2000/4处理器作为国产高性能芯片的代表,其外部中断功能在实际应用中展现出独特优势ÿ…...
如何将 iPhone 实况照片传输到电脑:四种最佳方法
实况照片是一种有趣的拍摄形式,它不仅能捕捉静态画面,还能记录下带有动态和声音的短暂瞬间。轻按一张实况照片,它就会 “动起来”,还原拍摄时几秒的动态画面和现场声音。 如果你已经掌握了普通照片从 iPhone 传输到电脑的方法&…...
像素剧本圣殿实战教程:用Creativity Slider调控剧本风格的详细方法
像素剧本圣殿实战教程:用Creativity Slider调控剧本风格的详细方法 1. 工具介绍与核心功能 像素剧本圣殿(Pixel Script Temple)是一款专为剧本创作者设计的AI辅助工具,基于Qwen2.5-14B-Instruct大模型深度优化。它最大的特色是将…...
LAVIS深度解析:语言视觉智能库的架构设计与视觉问答实现原理
LAVIS深度解析:语言视觉智能库的架构设计与视觉问答实现原理 【免费下载链接】LAVIS LAVIS - A One-stop Library for Language-Vision Intelligence 项目地址: https://gitcode.com/gh_mirrors/la/LAVIS 语言视觉智能库LAVIS、视觉问答VQA、多模态AI、BLIP模…...
基于Kubernetes Operator的MySQL InnoDB Cluster自动化部署实践
1. MySQL InnoDB Cluster与Kubernetes Operator基础 MySQL InnoDB Cluster是MySQL官方提供的高可用数据库解决方案,它基于MySQL Group Replication技术构建,能够实现多节点数据同步和自动故障转移。想象一下,这就像是一个由多个数据库实例组…...
MedGemma-X智能助手实测:像住院总医师一样分析X光片
MedGemma-X智能助手实测:像住院总医师一样分析X光片 1. 重新定义影像诊断:从工具到助手 在放射科的日常工作中,我们习惯了与各种CAD(计算机辅助诊断)系统打交道。它们像精确但沉默的尺子,能在图像上标出可…...
在树莓派4B上编译运行Speedtest-CLI:手把手解决curl和expat库的交叉编译难题
树莓派4B实战:从零构建Speedtest-CLI测速工具全流程指南 1. 环境准备与工具链配置 在树莓派4B上构建Speedtest-CLI测速工具,首先需要搭建完整的交叉编译环境。不同于x86平台的直接编译,ARM架构下的开发需要特别注意工具链的选择和配置。 必备…...
