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

qiankun主应用(vue2+element-ui)子应用(vue3+element-plus)不同版本element框架css样式相互影响的问题

背景:qiankun微前端架构实现多应用集成
主应用框架:vue2 & element-ui
子应用框架:vue3 & element-plus

>> 问题现象和分析

登录页面是主应用的,在登录之后才能打开子应用的菜单页面,即加载子应用。
首次进入登录页面样式是没有问题的,但是打开过子应用页面之后,再回到主应用的登录页面时,登录页面的下拉框和输入框的边框不见了。

1、F12观察 <el-input> 的结构和样式, element-ui.el-input_inner设置了 border,但是 element-plus 去掉了 border
在这里插入图片描述
2、再观察一下 element-plus<el-input>,比 element-ui 多了一层 el-input__wrapperelement-plus 是给 el-input__wrapper设置了 box-shadow来作为边框的
在这里插入图片描述

>> 解决方法

element-plus 提供了:自定义命名空间,参考官网将使用 element-plus 的应用使用自定义命名空间,与 element-ui 固定的 el-前缀区分开。
代码参考
App.vue

<template><el-config-provider namespace="ep"><!-- ... --></el-config-provider>
</template>

/src/styles/element_plus_index.scss

@forward 'element-plus/theme-chalk/src/mixins/config.scss' with ($namespace: 'ep'
);

vite.config.js(使用vite搭建项目)

import { defineConfig } from 'vite'
export default defineConfig({// ...css: {preprocessorOptions: {scss: {additionalData: `@use "@/styles/element_plus_index.scss" as *;`,/* additionalData: `@use "@/styles/element_plus_index.scss" as *;@use "@/styles/xxx.scss" as *;@use "@/styles/yyy.scss" as *;` */ // 如果有多个文件需要引入},},},// ...
})

vue.config.js(使用 vue-cli搭建项目)

module.exports = {css: {loaderOptions: {sass: {additionalData: `@use "@/styles/element_plus_index.scss" as *;`},},}
}

最后,把开发过程中自定义的一些 element组件样式中的 el-前缀都替换成ep-

>> 效果

如下图为子应用页面,可见子应用 element-plus 的 标签类名和样式文件都改为 ep-前缀,不会再影响主应用
在这里插入图片描述

>> 框架版本记录

(有些应用使用了较早版本的 element-plus,而较早版本的 element-plus功能当时还不是很稳定,自定义命名空间可能无法使用,记录一下我当前正在使用的框架版本)

  1. 应用框架版本1
	# vue-cli  5.0.8"vue": "^3.0.0""element-plus": "2.3.8"
  1. 应用框架版本2
	# vite  5.3.1"vue": "^3.4.29""element-plus": "^2.8.0"
http://www.lryc.cn/news/486796.html

相关文章:

  • resnet50,clip,Faiss+Flask简易图文搜索服务
  • 使用OkHttp进行HTTPS请求的Kotlin实现
  • 使用Mac下载MySQL修改密码
  • 运维面试题.云计算面试题集锦第一套
  • CSS-flex布局
  • Linux:进程的优先级 进程切换
  • web应用安全和信息泄露
  • 创建vue3项目步骤
  • 尽量通俗易懂地概述.Net U nity跨语言/跨平台相关知识
  • 【AlphaFold3】开源本地的安装及使用
  • vue2/vue3中使用的富文本编辑器vue-quill
  • 论文阅读《BEVFormer v2》
  • 自动化运维(k8s):一键获取指定命名空间镜像包脚本
  • HarmonyOS ArkUI(基于ArkTS) 开发布局 (上)
  • 第九部分 :1.STM32之通信接口《精讲》(USART,I2C,SPI,CAN,USB)
  • 5. langgraph中的react agent使用 (从零构建一个react agent)
  • uniapp vue3的下拉刷新和上拉加载
  • STM32设计井下瓦斯检测联网WIFI加Zigbee多路节点协调器传输
  • Vue 3 中的原生事件监听与组件事件处理详解
  • Flink Source 详解
  • 2024年了,TCP分析工具有哪些?
  • SRP 实现 Cook-Torrance BRDF
  • MySQL慢日志
  • Flutter网络通信-封装Dio
  • matlab 读取csv
  • 网络层9——虚拟专用网VPN和网络地址转换NAT
  • 开源科学工程技术软件介绍 – EDA工具KLayout
  • 【网络安全】Cookie SameSite属性
  • Linux 命令 | 每日一学,文本处理三剑客之awk命令实践
  • RabbitMQ的工作队列在Spring Boot中实现(详解常⽤的⼯作模式)