微前端:qiankun框架在开发中遇到的问题

基座是Vue3.0 + element plus配合 子应用 Vue2.0 + element ui导致的样式冲突问题

element-plus默认命名空间为el,el会作为其编译后的class名及css前缀。支持 自定义命名空间

首先在App.vue中定义:namespace="ep";具体代码如下:

复制代码
<template>
  <el-config-provider namespace="ep">
    <RouterView />
  </el-config-provider>
</template>

其次设置 SCSS 和 CSS 变量,创建 /src/assets/styles/element/index.scss, index.scss具体内容如下:

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

因为我使用的是 qiankun + vue3.0 + webpack,所以需要在webpack 的 preprocessorOptions 中设置。找到vite.config.js文件,

preprocessorOptions 中设置 additionalData: `@use "@/assets/styles/element/index.scss" as *;`,

具体修改内容如下:

复制代码
    css: {
      preprocessorOptions: {
        scss: {
          // 全局注入变量/混合宏(路径需根据项目调整)
          // additionalData: `@import "@/styles/variables.scss";`,
          additionalData: `@use "@/assets/styles/element/index.scss" as *;`,
          // 解决旧版 API 警告(Sass 版本兼容)
          api: 'modern-compiler',
        },
      },

到这里后,还有一点比较坑,我相信很多人也遇到了,就是配置完 依然不起作用,样式还是乱的,一步一深坑,跟着官方文档也得踩。其实答案就在你的main.js里;一般引入 element-plus 时,我们用的是

复制代码
import ElementPlus from 'element-plus';
import 'element-plus/dist/index.css'; 

需要注意的是:index.css是编译压缩过的,还用这个样式就等于没了,因为我们换了前缀命名,index.css还是默认 el 的;需要改为引入 import 'element-plus/theme-chalk/src/index.scss';

main.js文件修改如下:

复制代码
//import 'element-plus/dist/index.css'
import 'element-plus/theme-chalk/src/index.scss';

然后重新启动项目就🆗,前人踩坑后人乘凉..........

相关推荐
2分钟速写快排3 小时前
什么是 RAG?如何用 RAG 实现一个用户记忆?
前端·后端·ai编程
passerby60613 小时前
如何自己造一个时间处理库
前端·javascript·github
走到天涯海角4 小时前
react里面的长列表渲染优化
前端·react.js·前端框架
小羊没烦恼!4 小时前
Hello Web API系列教程——Web API与国际化
java·服务器·前端·javascript·php
北岛贰5 小时前
迷茫焦虑期,我做了一个带支付带官网的 AI 聊天虚拟恋人 App
前端·人工智能·后端
mayaairi6 小时前
Vue2 组件通讯(三):全局事件总线、PubSub、插槽与组件实例属性
前端·javascript·vue.js
kyriewen7 小时前
面试官问我:AI 都能写代码了,前端凭什么还值 25K
前端·javascript·人工智能
风骏时光牛马8 小时前
AI源码分析:拆解模型底层实现逻辑
前端
IT_陈寒8 小时前
React子组件莫名其妙重渲染?你可能漏了这个Hook
前端·人工智能·后端
乘风gg8 小时前
DeepSeek V4.1 Flash 来了,明天中午 Flash 降价 60%
前端·ai编程·claude