当前位置: 首页 > news >正文

在vite vue3 前端架构中,切换环境,切换项目的架构设计方案

最近在项目中遇到了这样一个问题,在我们的系统中,有一个项目的概念,用户可以创建多个项目,每个项目中又有多个环境, 当用户点击项目名称后,会进入一个项目的内页,左侧菜单栏会有切换环境的功能。而每个环境下会有很多资源,如文章,用户,角色,以及流水线。

那么在切换一个项目的环境后,要求停留在当前的页面,并获取当前环境下的文章,用户,角色,等数据。 路由大致是这样 /p/pid/e/eid/jobpid为项目id,eid为环境id。当切换环境后,只会改变当前url中的eid参数。

一开始我的设计的方案是 在切换环境时,更新路由中的eid,然后在每个需要刷新的页面watch route.params.eid,从而对页面的数据进行重新加载,或初始化。这个方案的有好处也有坏处,好处时,每个页面都可以在切换环境后 做单独的页面逻辑处理,对于公用的数据,即不依赖环境的接口数据,不需要重新加载。坏处是,有时工作量比较大,特别是当前页面中间变量比较多时。

我的同事的方案是,切换环境时,先跳转到一个空的页面,在该页面进行重定向。从而实现当前页面的重新加载 mounted。 这样做改动量很少,但由于新增了一个中间重定向组件,会导致很多意外情况,比如白屏,路由错乱,增加冗余组件。而且我认为这个方案很low。但鉴于当时我没有更好的方案,也就先采取了这个方案。比较工作量不多,剩下的时间来研究其他事情。

后来,我找到了一个更优雅的方案,那就是在
e目录下,创建eid目录以及eid.vue。 然后在eid.vue中只有一个 routerview组件,来渲染eid目录中的具体内容。最最重要的一点是 在routerview组件上 设置 :key="route.params.eid"由于key不同,vue会认为二个不同的节点,会重新渲染。
这样,只要路由中的eid变更后,routerview就会重新渲染,从而 下层的 文章,用户组件重新渲染。这是目前我找到的最优雅的方案。

http://www.lryc.cn/news/17016.html

相关文章:

  • 华为OD机试真题Python实现【跳格子】真题+解题思路+代码(20222023)
  • Python 入门之文件和异常处理
  • 操作系统作业
  • 【计算机网络 -- 期末复习】
  • 三、(补充)接口是对类的一部分行为的抽象
  • CIMCAI intellgent ship product applied by world top3 shipcompany
  • 媒体见面会怎么做?
  • Nginx面试题一步到位
  • 华为OD机试真题 用 C++ 实现 - 括号检查
  • Windows下SecureCRT的下载、安装、使用、配置【Telnet/ssh/Serial】
  • Git 分支操作
  • 【面试题】TCP如何保证传输可靠性?TCP流量控制实现、拥塞控制、ARQ协议、停止等待ARQ、连续ARQ
  • MySQL一隐式转换
  • 风光并网对电网电能质量影响的matlab/simulink仿真建模
  • 浅谈Spring循环依赖
  • 华为OD机试题 - 拼接 URL(JavaScript)| 包含代码编写思路
  • 【FFMPEG】Filtering Introduction[翻译/举例]
  • 什么是IP65?仅仅是防水等级吗?看完本文直呼666!
  • Flask入门(10):数据库连接池
  • 华为OD机试C++实现 - 最小步骤数
  • 数仓:用户行为类指标一网打尽
  • mysql数据库的主从复制
  • 【极海APM32替代笔记】低功耗模式、WFI命令等进入不了休眠的可能原因(系统定时器SysTick一直产生中断)
  • 一文搞懂秒杀系统,欢迎参与开源,提交PR,提高竞争力。早日上岸,升职加薪。
  • 华为OD机试真题 用 C++ 实现 - 子序列长度 | 多看题,提高通过率
  • 华为OD机试题 - 符合条件的子串长度(JavaScript)| 包含代码编写思路
  • 快速读懂网络拓扑图
  • 《上海市创新型企业总部认定和奖励管理办法》
  • LeetCode 160. 相交链表 -- 消除长度差
  • 《分布式技术原理与算法解析》学习笔记Day19