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

news2024/11/20 20:43:53

在qiankun开发中会遇到很多问题,上一篇微前端三:qiankun 协作开发和上线部署其实也是在解决一些经常遇到的问题,下面的两点也算是比较经典的了
1、子应用图片路径问题
2、基座是Vue2.0 + element ui 配合 子应用 Vue3.0 + element plus 导致的样式冲突问题
具体怎么解决我们一起来看下。

一、子应用图片路径问题
在使用qiankun做微前端的过程中,子应用在主应用(基座)的过程中出现静态资源404问题,
原因是子应用放入到基座中后,静态资源会默认走主应用地址去访问,但是主应用又没有这些静态资源文件,其结果显而易见,肯定是404了。
我们需要将 webpack publicPath 配置设置成一个绝对地址的 url,改为绝对路径即可:

const { name } = require("./package");
module.exports = {
  // Webpack dev server
  publicPath: `/${name}`,
  configureWebpack: {
    output: {
      library: `${name}-[name]`,
      libraryTarget: "umd", // 把微应用打包成 umd 库格式
      jsonpFunction: `webpackJsonp_${name}`
    }
  },
  chainWebpack: (config) => {
    config.module
      .rule("images")
      .use("url-loader")
      .loader("url-loader")
      .options({
        limit: 4096, // 小于4kb将会被打包成 base64
        fallback: {
          loader: "file-loader",
          options: {
            name: "img/[name].[hash:8].[ext]",
            publicPath
          }
        }
      });
  },
  productionSourceMap: false
};

这里的name 就是注册微应用的 entry值,之前文档也有提过。

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

先看一张解决完样式冲突后的样子,上面header是基座,下面是子应用
在这里插入图片描述
再看下没解决之前的样子,下面可以看出基座的input框没了,子应用的时间组件和下拉框组件样式也错乱了

在这里插入图片描述
在这里插入图片描述
产生问题的原因:
由于element-ui 和 element-plus 前缀相同、命名规则相同,但内部部分样式实现方式不同,从而导致样式被污染,页面样式混乱。

解决方法:自定义命名空间
element-plus默认命名空间为el,el会作为其编译后的class名及css前缀。支持自定义命名
在这里插入图片描述
在App.vue中代码为

<div id="app">
  <el-config-provider namespace="elplus">
    <router-view />
  </el-config-provider>
</div>

设置 SCSS 和 CSS 变量
创建 styles/element/index.scss:

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

因为我使用的是 qiankun + vue3.0 + webpack,所以需要在webpack 的 preprocessorOptions 中设置。

import { defineConfig } from 'vite'
// https://vitejs.dev/config/
export default defineConfig({
  // ...
  css: {
    preprocessorOptions: {
      scss: {
        additionalData: `@use "~/styles/element/index.scss" as *;`,
      }
    }
  }
})

上面是官网给出的代码一直到SCSS都没问题,但是webpack的配置不对,可能是我用的webpack版本比较高,我用的下面的配置

css: {
    loaderOptions: {
      // 给 sass-loader 传递选项
      scss: {
        // @/ 是 src/ 的别名
        // 这些是公共的scss变量和混合方法等
        additionalData: `@use "./src/assets/styles/index.scss" as *;`
      }
    }
  }

到这里后,还有一点比较坑,我相信很多人也遇到了,就是配置完 依然不起作用,整个样式还乱了
在这里插入图片描述
一步一深坑,答案就在你的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';

至此样式冲突算是彻底解决了,可以放心的用 vue3.0了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1105242.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

idea Java代码格式化规范

引入 最近在公司开发中&#xff0c;遇到了一点小问题&#xff0c;组内各同事的格式化规范不一致。一来导致代码样式并不统一&#xff0c;二来有时候合并代码会出现冲突&#xff0c;因此做一套统一代码格式化规范很有必要。 基础知识 在idea中&#xff0c;可以通过快捷键Ctrl…

数字孪生技术:煤矿运输的未来革命

煤矿是我国能源工业的重要支柱&#xff0c;然而&#xff0c;煤矿运输过程中一直存在着诸多问题&#xff0c;如安全隐患、能源浪费、效率低下等&#xff0c;这不仅对煤矿行业的可持续发展构成威胁&#xff0c;也对环境造成负面影响。因此&#xff0c;数字孪生技术应运而生&#…

2023年中国有创呼吸机产量、需求量及行业市场规模分析[图]

有创呼吸机主要是通过气管插管或者气管切开&#xff0c;然后通过管道连接在呼吸机上&#xff0c;为患者提供呼吸支持&#xff0c;主要针对的患者是昏迷的&#xff0c;无自主呼吸或不能耐受无创呼吸机的患者。 有创呼吸机是高端医疗装备&#xff0c;设计、生产和临床验证都必须经…

element-ui中表格树类型数据的显示

项目场景&#xff1a; 1&#xff1a;非懒加载的情况 1&#xff1a;效果展示 2&#xff1a;问题描述以及解决 1&#xff1a;图片展示 2&#xff1a;html <-- default-expand-all 代表默认展开 如果不展开删除就行 --> <el-tableref"refsTable"v-loadin…

2023年中国热电厂发电装机量、热电厂发电量及市场需求分析[图]

热电厂是以热定电&#xff0c;以供热为主要目的发电厂。热电厂是同时生产供应热和电的工厂&#xff0c;既是可以对外供热的发电厂&#xff0c;也是可以发电上网的供热站&#xff0c;其核心技术就是“热电联产”。热电厂的主要应用领域涵盖了工业生产、城市供热、电力系统支撑等…

2023年中国液晶显示板产量、需求量、市场规模及价格趋势分析[图]

显示面板主要包括LCD和OLED&#xff0c;液晶显示技术&#xff08;LCD&#xff09;是利用电场改变液晶分子排列状态而调制外界背光源的一种非自发光性显示技术&#xff0c;液晶面板是决定液晶显示器亮度、对比度、色彩、可视角度的材料&#xff0c;目前液晶显示面板的主流为TFT-…

eVTOL无人驾驶载人航空器动力测试系统:500kg级-高精度专业测试系统

平台功能强大的软件操作系统&#xff0c;专用于eVTOL大型电机和螺旋桨动力系统测试。 系统简介 Flight Stand 500测试台通过测量电机和螺旋桨的拉力、扭矩、转速、电流、电压、温度、螺旋桨效率和电机效率来精准地描述和评估无人机动力系统的性能。 技术规格 技术优势 Fligh…

postgresql字符串处理的函数

1. SPLIT_PART SPLIT_PART() 函数通过指定分隔符分割字符串&#xff0c;并返回第N个子串。语法&#xff1a; SPLIT_PART(string, delimiter, position) string : 待分割的字符串 delimiter&#xff1a;指定分割字符串 position&#xff1a;返回第几个字串&#xff0c;从1开始&…

【C++心愿便利店】No.9---C++之内存管理

文章目录 前言一、 C/C内存分布二、 C语言中动态内存管理方式三、 C中动态内存管理四、 operator new与operator delete函数五、 new和delete的实现原理六、 定位new表达式(placement-new)七、 malloc/free和new/delete的区别八、 内存泄漏 前言 &#x1f467;个人主页&#xf…

基于内存的分布式NoSQL数据库Redis(六)AOF设计

文章目录 知识点21&#xff1a;Redis持久化&#xff1a;AOF设计知识点22&#xff1a;Redis持久化&#xff1a;AOF实现附录一&#xff1a;Jedis Maven依赖 知识点21&#xff1a;Redis持久化&#xff1a;AOF设计 目标&#xff1a;掌握Redis的AOF持久化机制 路径 step1&#xff1…

FPGA 图像缩放 1G/2.5G Ethernet PCS/PMA or SGMII实现 UDP 网络视频传输,提供工程和QT上位机源码加技术支持

目录 1、前言版本更新说明免责声明 2、相关方案推荐UDP视频传输--无缩放FPGA图像缩放方案我这里已有的以太网方案 3、设计思路框架视频源选择ADV7611 解码芯片配置及采集动态彩条跨时钟FIFO图像缩放模块详解设计框图代码框图2种插值算法的整合与选择 UDP协议栈UDP视频数据组包U…

从0到1,申请cos服务器并上传图片到cos文件服务器

目录 准备工作 Java代码编写 控制台打印 整理成工具类 编写接口 Postman测试 准备工作 1.进入网址腾讯云 产业智变云启未来 - 腾讯 (tencent.com) 2.搜索cos,点击立即使用&#xff0c;刚开始会免费赠送你 3.存储都是基于桶的&#xff0c;先创建桶&#xff0c;在桶里面创…

【C++】多态 -- 详解

⚪前言 声明一下&#xff0c;下面的代码和解释都是在 VS2019 下的 X86 程序中进行的&#xff0c;涉及的指针都是 4 bytes。如果要其他平台下&#xff0c;部分代码需要改动。比如&#xff1a;如果是 X64 程序&#xff0c;则需要考虑指针是 8 bytes 问题等等。其它编译环境下&…

TCP/IP(十八)TCP 实战抓包分析(二)TCP 三次握手和四次挥手

一 TCP三次握手和四次挥手 说明&#xff1a; 本文三次握手和四次挥手 无异常情况下的分析目标&#xff1a; 通过抓取和分析 HTTP 协议网络包,理解 TCP 三次握手和四次挥手的工作原理 ① 抓包和测试准备 1、 服务端事先执行 tcpdump 抓包 --> 172.25.2.100tcpdump -i b…

VMware 虚拟机里连不上网的解决方案

解决办法一&#xff1a; 虚拟机设置里&#xff0c;找到“网络适配器”,右边的网络连接选择“NAT 模式”&#xff0c;如果不行的话再 linux系统。还是不行的话接着看第二种解决方案。 解决方法二&#xff1a; 可能原因是VMware NET Service服务没开 win R&#xff0c;输入&a…

CSS 笔记/练习

CSS 概述 与 html 配合&#xff0c;实现内容与样式分离样式美化 标签中元素作用 class&#xff1a;class属性用于为元素指定一个或多个样式类。通过为元素添加class属性&#xff0c;可以将其与CSS样式表中的样式规则关联起来&#xff0c;从而改变元素的外观和行为。一个元素可…

Confluence 解决PDF导出乱码问题

1.原因 PDF导出乱码是因为由于服务器缺少必要字体 2.解决办法 下载字体文件将字体文件重命名为simhei.ttf Confluence→管理→PDF导出语言支持&#xff0c;导入字体即可

sqlalchemy更新json 字段的部分字段

需求描述&#xff1a; 我们有个json字段&#xff0c;存储的数据形如下&#xff0c;现在需要修改love {"dob":"21","subject":{"love":"programming"}}工程结构 main.py from sqlalchemy import Column, String, Integer,c…

微信公众号如何变更为订阅号?

公众号迁移有什么作用&#xff1f;只能变更主体吗&#xff1f;大家都知道&#xff0c;微信公众号是不支持直接变更主体的&#xff1b;但是很多情况下&#xff0c;我们又不得不进行账号主体的更换&#xff1b;这时候&#xff0c;我么就可以通过账号迁移功能&#xff0c;将A公众号…

图像抓取代码示例

以下是一个使用luasocket-http库的Lua下载器程序&#xff0c;用于下载图像。此程序使用了https://www.duoip.cn/get_proxy的代码。 -- 引入luasocket和luasocket-http库 local socket require("socket") local http require("http") ​ -- 获取代理服务…