wujie初使用--部署篇

在采用wujie框架进行微前端项目部署时,遇到了跨域、资源404、浏览器卡顿及子应用CSS不生效等问题。通过将子应用配置为与主应用相同域名、设置base路径、避免预加载阻塞主线程以及修改CSS选择器,成功解决了这些问题。在线上环境中,主应用和子应用运行正常。

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

背景

新起了项目,决定使用微前端技术,最终框架确定使用wujie。(微前端基础知识和框架对比选取,网上很多例子,不做赘述)
根据文档和网上已有资料,很轻易的在本地起来了项目,但是在部署到线上后,出现了问题且在网上没有找到解决的办法,现将遇到的问题和我的解决方法记录如下。
主应用和子应用都是vite4 + vue3

问题-方法

问题1: 主应用和子应用部署在不同的服务,主应用获取子应用index.html会报跨域。

在主应用hostMap文件中,最初是把本地对应的地址直接写成了子应用的服务器地址,就会报跨域。

解决方法:将子应用配置成和主应用相同的域名。

如:主应用是zhuyingyong.dev.demo.com,
那么hostMap可以配成:‘//localhost:8082/': '/zhuyingyong.dev.demo.com/ziyingyong/’,
然后在主应用部署的服务器nginx中配置如下代理,子应用的nginx也要正常配置Access-Control-Allow-Origin等跨域相关内容

location /ziyingyong/ {
   proxy_pass https://ziyingyong.dev.demo.com/;
}

问题2:获取子应用index.html后,获取其中的js和css文件,会提示404

因为是新项目,在子应用的vite.config.js中未配置base(默认值是’/'),因此在打包之后,index.html中的js和css文件路径类似如下:

src="/assets/index.1241sdf.js"
href="/assets/index.zcxvqwer.css"

由于子应用挂在主应用下,所有的请求都是主应用发起,所以这种路径会在主应用的服务器去找这两个文件。

解决方法:在子应用vite.config.js中配置base: “./”

问题3:解决以上两个问题后,子应用资源能够正常加载,但是主应用会卡住,直到卡崩浏览器

这个问题困了我1天半的时间,此时你会发现,控制台不报错,资源也不跨域,但是浏览器就是卡住了。后来灵光一现,在wujie文档中看到了preloadApp的警告:资源的预执行会阻塞主应用的渲染线程

解决方法:主应用的main.ts中的setupApp和preloadApp,url就传个’’

问题4:解决以上3个问题,线上能跑起来了,子应用配置在root中的css不生效

因为子应用挂在主应用上后,:root就变成了主应用的,所以子应用的样式不再生效

解决方法:使用主应用setupApp子应用的plugins属性中的cssLoader,代码如下:

cssLoader: (code: string) => {
	const rootStyleReg = /:root/g
    const hostStyleReg = /:host/g
    let newCode = code
    newCode = newCode.replace(rootStyleReg, ':host').replace(hostStyleReg, ':host html')
    return newCode
}

备注

主应用使用接口目前正常,没有什么异常错误,子应用还未到调接口阶段,是否隐藏什么问题,还未发现,如有发现,后续再发

wujie-vue2是一个Vue.js的组件库,用于在Vue2项目中使用。你可以通过在主应用中安装wujie-vue2并在app.vue文件中引入和使用wujie-vue2组件来集成它。安装wujie-vue2的命令是npm install wujie-vue2 --save。在app.vue文件中,你可以使用<template>标签来定义组件的HTML模板,<script>标签来编写组件的逻辑,以及<style>标签来定义组件的样式。在模板中,你可以使用<router-link>来创建路由链接,<router-view>来显示当前路由对应的组件。同时,你还可以在逻辑部分使用watch函数来监听$route.currentRoute的变化,并在变化后执行相应的逻辑操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue接入微前端无界框架总结](https://blog.youkuaiyun.com/baiqiangdoudou/article/details/127612084)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [微前端wujie使用与nginx部署整理](https://blog.youkuaiyun.com/qq_41030766/article/details/129405922)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值