位置: IT常识 - 正文

vue实现动态路由添加(简单无废话版本)(vue动态路由是什么)

发布时间:2024-01-17
vue实现动态路由添加(简单无废话版本)

推荐整理分享vue实现动态路由添加(简单无废话版本)(vue动态路由是什么),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue动态路由与静态路由的区别,vue实现动态路由菜单,vue动态路由传参,vue动态路由三种方法,vue实现动态路由跳转,vue实现动态路由的方法,vue实现动态路由跳转,vue实现动态路由菜单,内容如对您有帮助,希望把文章链接给更多的朋友!

最近练习vue的项目,有关于后台管理系统的动态添加路由部分,根据思路实现了基本的功能,在这里记录一下,等后面学习后在进行优化。

这里只是记录我个人最后实现的思路,本人由于是初学者,可能思路和代码有不正确地方,还求多见谅。也请能不吝赐教,一同进步。

一 . 封装一个处理生产路由的函数vue实现动态路由添加(简单无废话版本)(vue动态路由是什么)

我们可以封装一个函数,这个函数专门用来帮助我们生产最后添加到路由中的路由对象。

//map-menu.js //动态添加路由const modules = import.meta.glob('../views/*/*.vue') //vite中获取组件文件的方法export function mapMenu(navList) {//navList 传入后台接口返回的路由列表 //最终动态添加路由返回数组 const routerList = [] for (const key of navList) { routerList.push({ path: `/${key.nUrl.split('/')[2]}`, name: `${key.nUrl.split('/')[2].toUpperCase()}`, component: modules[`..${key.nUrl}`] }) } return routerList}

注意:这里需要大家自己根据自己需要的情况进行处理,因为后端接口传递过来的数据不同,所以你需要根据情况将path,name,component这三个获取出来并最终转换成你需要的。

二. vuex中进行调用

我们封装好了一个函数,接下来我们就需要调用来帮助我们动态生产路由,但是有一个问题来了,我们需要何时来进行动态生成路由。 这里我个人理解是:1.在用户进行登录后进行动态生产路由,将用户的菜单生成出来,并保存起来。 2. 就是在页面刷新时候我们也需要动态生成路由,因为刷新页面路由会刷新,不再次进行动态生成就是丢失,这里我们可以和对vuex初始化一起进行。

// vuex中的user.js模块//动态添加路由import { mapMenu } from '@/util/map-menu.js' //前面封装的函数 state: { userNav: [] }, mutations: { changeUserNav(state, userNav) { state.userNav = userNav //动态添加路由 mapMenu(userNav).forEach((route) => { router.addRoute(route)//动态添加路由 }) } }, actions: { async requestUserNav({ commit }) { const navList = await getRolesNavRequest() commit('changeUserNav', navList) cache.setCache('jxcms-userNav', navList) }}

这样我们就定义好了,只需要调用store.dispatch('requestUserNav') 就可以动态生成路由。另外,因为vue-router4.0中将 router.addRoutes方法废除了,所以我们只能使用 router.addRoute 循环添加所有的路由。

三,最终完成动态添加路由

前面我们说过了,我们动态添加路由的时机就是二个,初始化和登录时候,所以我们现在就完成最后的部分。

// vuex中的user.js模块//动态添加路由import { mapMenu } from '@/util/map-menu.js' //前面封装的函数 state: { ... }, mutations: { ... }, actions: { async loginUser({ dispatch, commit }, info) { const loginRes = await loginUser(info) if (loginRes.uName) { if (!cache.getCache('jxcms-token')) { ElMessage({ message: '登录成功!', type: 'success' }) } commit('changeUser', loginRes) //本地存储 cache.setCache('jxcms-user', loginRes) dispatch('requestUserNav')//执行动态生成路由 router.push('/roles') cache.setCache('jxcms-token', loginRes.token) } else { ElMessage({ message: '登录失败', type: 'error' }) } }}

这里我们完成第一个动态添加路由的时机,登录成功时候,进行动态路由添加。

// vuex中的根模块 index.js actions: { initializationData({ dispatch, commit }) {//vuex初始化函数 const navList = cache.getCache('jxcms-userNav') commit('changeUserNav', navList)//动态生成路由 //要用同步的 const user = cache.getCache('jxcms-user') commit('changeUser', user) } }, modules: { user, nav, dept, roles }// main.js//初始化store.dispatch('initializationData')

这里我们完成了动态生成路由的第二个时机:刷新页面时,初始化时候进行动态路由生成. 因为刷新页面时候用户可能是登录状态,这样我们就不能通过登录成功来触发动态路由添加,就需要我们主动进行动态路由生成,在初始化时候,获取到本地存储的菜单信息,如果用户没有登录,本地的菜单信息会被清除。 另外,这里我使用的是commit来提交mutations,而不是actions函数,这是因为我在测试过程中发现,如果我使用actions,那么我在进入路由页面前,路由并没有创建成功,会报错,而使用mutations,因为是同步的,所以不会出现这个情况。这个问题后面如果找到解决办法,会重新进行修改。

本文链接地址:https://www.jiuchutong.com/zhishi/300833.html 转载请保留说明!

上一篇:Three.js教程:材质效果(three.js 入门)

下一篇:使用微软新必应(New Bing)AI机器人生成树莓派Pico W开发板MicroPython应用程序(使用微软必应需要哪些条件)

  • 华为手机怎么找回删除的照片(华为手机怎么找到对方的手机位置)

    华为手机怎么找回删除的照片(华为手机怎么找到对方的手机位置)

  • 苹果xs被摔会影响内部么(iphonex被摔了)

    苹果xs被摔会影响内部么(iphonex被摔了)

  • 苹果6访问限制密码忘了怎么办(苹果6访问限制密码是啥)

    苹果6访问限制密码忘了怎么办(苹果6访问限制密码是啥)

  • 手机微博文章打不开(微博手机端发文章)

    手机微博文章打不开(微博手机端发文章)

  • 分辨率h265是什么意思(h265分辨率码率对应表)

    分辨率h265是什么意思(h265分辨率码率对应表)

  • ipad做windows手写板(ipad作为电脑手写板)

    ipad做windows手写板(ipad作为电脑手写板)

  • 电信宽带错误代码651什么意思(电信宽带错误代码678)

    电信宽带错误代码651什么意思(电信宽带错误代码678)

  • 小米air2无法双耳连接(小米air2双击没反应)

    小米air2无法双耳连接(小米air2双击没反应)

  • windows分屏快捷键(windows快速分屏)

    windows分屏快捷键(windows快速分屏)

  • 可立拍是什么(可立拍是什么软件,可以删除吗)

    可立拍是什么(可立拍是什么软件,可以删除吗)

  • 键盘膜清洗后还能用吗(键盘膜洗完很脏)

    键盘膜清洗后还能用吗(键盘膜洗完很脏)

  • 抖音已发布视频怎么编辑(抖音已发布视频怎么删除)

    抖音已发布视频怎么编辑(抖音已发布视频怎么删除)

  • 小米8支持电视投屏吗(小米8可以电视投屏吗)

    小米8支持电视投屏吗(小米8可以电视投屏吗)

  • 蜂窝移动是什么意思(蜂窝移动网络是啥意思)

    蜂窝移动是什么意思(蜂窝移动网络是啥意思)

  • vivoy97多少英寸(vivoy97的手机屏幕多大)

    vivoy97多少英寸(vivoy97的手机屏幕多大)

  • 苹果8plus怎么录屏幕视频(苹果14plus怎么录屏)

    苹果8plus怎么录屏幕视频(苹果14plus怎么录屏)

  • ios13三指复制怎么关闭(苹果13三指复制粘贴)

    ios13三指复制怎么关闭(苹果13三指复制粘贴)

  • 快剪辑怎么删除不要的部分(快剪辑怎么删除多余的时间轴)

    快剪辑怎么删除不要的部分(快剪辑怎么删除多余的时间轴)

  • 小米mab能卸载吗(miuiadb卸载)

    小米mab能卸载吗(miuiadb卸载)

  • 群聊如何屏蔽个人相册(群聊如何屏蔽个人消息)

    群聊如何屏蔽个人相册(群聊如何屏蔽个人消息)

  • oppor15手机电话拉黑名单了,怎么找出来(oppor15手机电话本怎么储存卡上)

    oppor15手机电话拉黑名单了,怎么找出来(oppor15手机电话本怎么储存卡上)

  • qq小火花掉了怎么补上(qq小火花掉了怎么找回来)

    qq小火花掉了怎么补上(qq小火花掉了怎么找回来)

  • 手机上的计算器怎样开方(手机上的计算器怎么变成科学计算器)

    手机上的计算器怎样开方(手机上的计算器怎么变成科学计算器)

  • 快手卡点视频怎么弄(快手怎么卡点视频怎么剪辑)

    快手卡点视频怎么弄(快手怎么卡点视频怎么剪辑)

  • vivox27支持红外吗(vivox27支持红外功能吗)

    vivox27支持红外吗(vivox27支持红外功能吗)

  • 如何保护电子邮件安全(如何保护电子邮件账户不被黑客攻击)

    如何保护电子邮件安全(如何保护电子邮件账户不被黑客攻击)

  • 设计印刷合同
  • 个体工商户怎么年报
  • 分税制财政管理体制是什么?
  • 当月减少的固定资产当月停止折旧
  • 科目余额表怎么导出
  • 存货周转率 高
  • 工厂报废的产品价格有规定吗
  • 非独立核算的分公司注销流程
  • 培训发票可以抵进项税吗
  • 应征增值税不含税销售额(3%征收率)怎么算
  • 药企常见税务风险及措施
  • 公司承兑汇票怎么兑现
  • 核定征收的个税怎么算
  • 销售残次品怎么处罚
  • 苹果电脑型号怎么查
  • linux 将一个文件的内容给另一个文件
  • 预提费用冲销需要重新计提吗
  • 单位价值5000元二手设备怎么算
  • 计提工资的时候是应发合计还是实发合计
  • 鸿蒙系统怎么关闭负一屏
  • php编程入门教程
  • php判断为空的方法有哪些
  • 酒店没有营业执照开业员工有责任吗
  • 支付挂靠方的管理费用有进项吗?
  • 工会经费是职工工资总额的
  • 居民企业境外所得税抵免限额
  • linux服务有哪些
  • 银行汇票属于银行存款吗
  • echarts css
  • php读取json数组中指定内容
  • 关于B站bilibili名字的由来
  • 关于商业承兑汇票的多选题有哪些
  • 以固定资产抵账什么意思
  • 入库单正确填写方法
  • 小微企业所得税税率2.5% 10% 25%
  • 帝国cms如何调用网络
  • 如何让网站优化成功
  • 企业进行材料清查盘点中盘盈的材料
  • 增值税专用发票电子版
  • sql 封装
  • mysql存储过程语句
  • 筹建期间的开办费为什么不属于资产
  • 退教育费附加税怎么申报
  • 暂估成本发票最晚什么时候补齐
  • 暂估和开票的差异 erp处理
  • 固定资产到期后继续使用称为什么
  • 股权激励费用如何计提
  • 税控抵税怎么做分录
  • 基建待摊费用如何分摊
  • 准予抵扣销项税额
  • 社区养老服务平台
  • msde安装1秒不动了
  • 关闭terminal monitor
  • sql外连接
  • win7系统如何打开
  • windows2003怎么升级
  • 怎么查看win7系统电脑访问了哪些应用程序
  • win7系统隐藏文件夹怎么取消隐藏
  • ssh远程连接linux
  • gpt分区方法
  • 电脑打开win
  • 影响电脑速度的因素
  • win10打开此电脑的快捷键
  • 此电脑右键
  • windos撤销
  • win7系统盘扩大
  • unity3ds
  • three.js加载glb文件
  • Android OnTouchEvent, onClick, onLongClick调用机制
  • android:LruCache缓存小结
  • 全国哀悼日的意义
  • bat批处理执行cmd命令
  • node.js异步编程
  • junit 原理
  • python urllib urlopen
  • JavaScript焦点事件、鼠标事件和滚轮事件使用详解
  • 房产税的计税依据及税率
  • 重庆税务局发票作废
  • 金税盘读取发票
  • 公务员考试税局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号