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

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.kler.cn/a/401761.html

相关文章:

  • 前端接入Paymax支付请求
  • 领海基点的重要性-以黄岩岛(民主礁)的领海及专属经济区时空构建为例
  • 博客园-awescnb插件-geek皮肤优化-样式优化
  • MATLAB绘制克莱因瓶
  • nodejs入门(1):nodejs的前后端分离
  • 【经验分享】2024年11月下半年软件设计师考试选择题估分(持续更新~~)
  • Linux驱动开发快速入门——字符设备驱动(直接操作寄存器设备树版)
  • MySQL系统优化
  • 芯片之殇——“零日漏洞”(文后附高通64款存在漏洞的芯片型号)
  • css iframe标签使用
  • LeetCode - #138 随机链表的复制
  • 多品牌摄像机视频平台EasyCVR视频融合平台+应急布控球:打造城市安全监控新体系
  • 服务器产品
  • 最小生成树应用北极通讯网络
  • JavaScript高效处理CSV文件的操作指南
  • Misc_01转二维码(不是二进制)
  • 【软考】系统架构设计师-信息安全技术基础
  • 【网络】数据链路层协议——以太网,ARP协议
  • DAHL:利用由跨越 29 个类别的 8,573 个问题组成的基准数据集,评估大型语言模型在生物医学领域长篇回答的事实准确性。
  • 《C++ 实现区块链:区块时间戳的存储与验证机制解析》
  • Axure智慧社区数据可视化大屏模板
  • 高效语言模型 Parler-TTS 上线,一键完成文本转语音
  • Mybatis框架之单例模式 (Singleton Pattern)
  • 微服务day09
  • 使用Python语言编写一个简单的网页爬虫,用于抓取网站上的图片并保存到本地。
  • 同步接口和异步接口-------每日一问