微前端乾坤使用过程中的坑

本文详细探讨了在使用微前端框架乾坤时遇到的五大问题,包括iconfont字体加载失败、DOM查询失效、组件库样式隔离、第三方JS加载不畅以及webpack-dev-server代理接口时cookie丢失。针对这些问题,作者给出了具体的解决方案,如修改字体文件位置、代理DOM查询方法、调整元素添加位置、处理第三方JS执行和调整跨域设置。这些解决方案旨在帮助开发者更好地理解和解决微前端环境中遇到的实际问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微前端乾坤使用过程中的坑

乾坤在启动子应用的时候默认开启沙箱模式{sandbox: true},这样的情况下,乾坤节点下会生成一个 shadow dom,shadow dom 内的样式与外部样式是没有关联的,这样就会给子应用内的样式带来一系列问题。这其中很多问题并不是乾坤造成的,而是 shadow dom 本身的特性导致的,乾坤还是不错的(不背锅)。随时补充

1.iconffont 字体在子应用无法加载

原因:shadow dom 是不支持@font-face 的,所以当引入 iconfont 的时候,尽管可以引入样式,但由于字体文件是不存在的,所以相对应的图标也无法展示。

相关链接:@font-face doesn’t work with Shadow DOM?Icon Fonts in Shadow DOM

方案:

  1. 把字体文件放在主应用加载
  2. 使用通用的字体文件

2.dom的查询方法找不到指定的元素

原因:

### 微前端 Qiankun 使用常见问题及解决方法 #### 子应用中的资源加载问题 当子应用作为独立应用程序运行时一切正常,但在被父应用加载时出现问题。例如,在使用 `iconfont` 图标的场景下,如果子应用在独立环境中能够正确展示图标,而通过 qiankun 加载到主应用中却无法显示,则可能是由于相对路径配置不当造成的。为了确保公共资源能被正确访问,建议采用绝对路径来引入这些资源文件[^2]。 对于上述情况的一个具体解决方案是在构建工具(如 Webpack)配置中设置公共路径 (`publicPath`) 为相对于根目录的 URL 或者使用 CDN 链接直接引用外部资源。这样无论是在开发环境还是生产环境下都能保证静态资源的有效加载。 ```javascript // webpack.config.js 中的部分配置项 module.exports = { output: { publicPath: '/', // 设置为'/'表示所有资源都从根路径开始计算 }, }; ``` #### 跨域资源共享 (CORS) 另一个常见的问题是跨域请求失败。这通常发生在微服务架构下的不同域名之间互相调用 API 接口时。要解决这个问题,可以在服务器端开启 CORS 支持,允许来自特定源站的 HTTP 请求;也可以考虑部署反向代理服务器统一处理前后端之间的通信。 #### 生命周期钩子函数执行顺序混乱 有时开发者会发现某些预期的行为并没有按照设想那样发生,尤其是在涉及到多个子应用间的交互逻辑时。这是因为各个模块间可能存在依赖关系,但默认情况下它们会被并行初始化。为了避免这种情况的发生,应该合理利用 qiankun 提供的应用生命周期事件来进行必要的同步控制[^1]。 - `beforeLoad`: 在加载任何远程入口之前触发; - `mounted`: 当组件挂载完成之后立即调用; - `bootstrap`: 应用启动阶段最先被执行的方法之一; - `unmount`: 卸载当前实例前调用此回调清理工作。 了解以上几个重要时刻点有助于更好地管理各部分代码片段以及优化用户体验流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值