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

微前端qiankun框架,子页面图标样式错乱问题,显示为X

问题

quankun官方文档

使用qiankun加载子页面,子页面是element-ui组件库,用vue2来开发,图标出现了样式错乱,显示为X

在这里插入图片描述

loadMicroApp 下子应用的图标(ElementUI/iconfont)不见,99% 是资源路径 / 样式隔离 / 跨域导致字体文件没被正确加载。按下面顺序改,

1、entry 要用源地址(不要带 #

entry 是要去拉子应用 index.html 的地址,不要写路由 hash。

const app = loadMicroApp({name: 'app1',entry: 'http://127.0.0.1:8081/',   //  正确;不要 'http://127.0.0.1/#/'container: '#micro-container',props: { userInfo: resp.data },sandbox: { experimentalStyleIsolation: true } // 见第3点,可切换验证
})

端口按你的子应用 devServer 实际端口改。


2、 子应用必须启用 runtime publicPath

否则 css/js/字体会当成“相对主应用”的路径去请求,导致 404 或请求错域。

子应用:
src/public-path.js

if (window.__POWERED_BY_QIANKUN__) {__webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__;
}

src/main.js 顶部第一行:

import './public-path'

vue.config.js

  • webpack v4:
const packageName = require('./package.json').name;module.exports = {publicPath: '/',  // 让资源走运行时 publicPathdevServer: {port: 8081,headers: { 'Access-Control-Allow-Origin': '*' } // 见第4点},configureWebpack: {output: {library: `${packageName }-[name]`,libraryTarget: 'umd',jsonpFunction: `webpackJsonp_${packageName }`,}}
}
  • webpack v5:
const packageName = require('./package.json').name;module.exports = {publicPath: '/',  // 让资源走运行时 publicPathdevServer: {port: 8081,headers: { 'Access-Control-Allow-Origin': '*' } // 见第4点},configureWebpack: {output: {library: `${packageName}-[name]`,libraryTarget: 'umd',chunkLoadingGlobal: `webpackJsonp_${packageName}`,}}
}

3、 样式隔离与外链字体

experimentalStyleIsolation 开启后用 Shadow DOM,有些 外链 的 css 里相对 url 字体可能失效。

  • 切换验证

    • 如果你现在开着:改为 sandbox: { experimentalStyleIsolation: false }
    • 如果你现在关着:尝试开成 true
  • 长期修复任选其一:

    • 把图标 CSS 走打包import 'element-ui/lib/theme-chalk/index.css' 或本地化 iconfont.css),让 webpack 处理 url(),自动拼上 publicPath。
    • 或把 iconfont 换成 CDN 绝对地址(https/同域),避免相对路径。

http://www.dtcms.com/a/343797.html

相关文章:

  • Halcon那些事:什么是动态阈值,如何用dyn_threshold分割图片
  • Elasticsearch Rails 实战全指南(elasticsearch-rails / elasticsearch-model)
  • 集成电路学习:什么是K-NN最近邻算法
  • Seaborn数据可视化实战:Seaborn图表定制与数据可视化入门
  • AI+虚拟仿真:以科技之光照亮希望的田野
  • 课小悦系列智能耳机上市,用硬核科技为教育赋能
  • 学习嵌入式第二十三天——数据结构——栈
  • Qt5 文件与数据处理详解
  • NETSDK1045 当前 .NET SDK 不支持将 .NET 8.0 设置为目标。请将 .NET 5.0 或更低版本设置为目标,或使用支持
  • 【FPGA Interlaken协议】
  • 服务器与客户端
  • AI服务器介绍
  • FPGA设计中的信号完整性量化与优化:探索高速数字系统的关键路径
  • 20.9 QLoRA微调实战:1.5B参数Whisper-large-v2在24GB显存实现中文语音识别,CER骤降50%!
  • 企业微信新版搞了个AI功能
  • 构效关系(Structure-Activity Relationship, SAR)分析的标准方法:R基团结构解析
  • Amazon Lambda:无服务器时代的计算革命,解锁多样化应用场景
  • MATLAB入门教程
  • 【PSINS工具箱】MATLAB例程,二维平面上的组合导航,EKF融合速度、位置和IMU数据,4维观测量
  • 如何创建一个Cloudfalare worker项目?
  • 当下一次攻击发生前:微隔离如何守护高敏数据,防范勒索攻击下的数据泄露风险!
  • 【变压器老化仿真】matlab实现变压器老化过程的行为模拟与源码编写
  • 24.解构赋值
  • Qt5 的跨平台开发详细讲解
  • 嘉立创eda元件导出到kicad库以使用
  • Spring Ai 1.0.1中存在的问题:使用MessageChatMemoryAdvisor导致System未被正确的放在首位
  • 拆解本地组策略编辑器 (gpedit.msc) 的界面和功能
  • 相似度、距离
  • 【C++】--函数参数传递:传值与传引用的深度解析
  • C++ csignal库详细使用介绍