qiankun 模板(vue,umi,react可选)
- 基座可选:
vueorumi - 子项目可选:
vue,umiorreact
github仓库地址:github.com/flygo6/mfe-…
基本介绍
-
支持本地开发调试,支持线上
docker+nginx(有点夸张)项目
主项目:
- main-vue,端口 8000,后端服务端口 4000
- main-umi,端口 9000,后端服务端口 4500
子项目:
- sub-vue,端口 8080,后端服务端口 4040
- sub-umi,端口 8090,后端服务端口 4045
- sub-react,端口 8100,后端服务端口 4050
vue 项目使用 vue-cli 脚手架:
vue create <appName>umi 项目使用 umi 脚手架:
mkdir <appName> & cd <appName> yarn create @umijs/umi-app # or: npx @umijs/umi-app # 注意我不使用yarn create umi,因为这里生成的app的Umi版本是@2,升级到@3又花费精力,故弃之不用!react 项目使用 cra 脚手架:
npx create-react-app <appName>注意
- 1、需要全局安装 1 个包:
express。 - 2、运行项目之前,先运行后端服务:
node server.jsornpm run server.
代理请求
-
1、主项目
http://localhost:8000/api --> http://localhost:4000 -
2、子项目
http://localhost:8080/api --> http://localhost:4040 -
3、微前端情况下的子项目请求:【重点处理!!】 首先需要加上特定前缀,以识别是哪个子应用发起的,如加上
subVueApi,然后主项目需要进行proxy转发:http://localhost:8000/subVueApi/api --> http://localhost:8080/api --> http://localhost:4040
详情请看项目文件!
重点关注
所有项目的
proxy配置都相似,为如下结构:proxy: { '/api': { // 不能用'^'(确切地说:vue项目可用,可不用,但是umi一定不能用!) target: 'http://localhost:4000', changeOrigin: true, pathRewrite: { '^/api': '/' } }, }但是
main-vue项目这样配会出问题,应该使用如下配置:proxy: { '^/api': { // 注意要'^'号(确切地说是,vue子项目可用可不用,umi不能用,vue主项目一定要用!) target: 'http://localhost:4000', changeOrigin: true, pathRewrite: { '/api': '/' } }, '^/subVueApi': { target: 'http://localhost:8080', changeOrigin: true, pathRewrite: { '/subVueApi': '/' } }, '^/subUmiApi': { target: 'http://localhost:8090', changeOrigin: true, pathRewrite: { '/subUmiApi': '/' } }, '^/subReactApi': { target: 'http://localhost:8100', changeOrigin: true, pathRewrite: { '/subReactApi': '/' } } }这样配置基本可以,但是
main-vue + sub-umi项目却还是有问题,就是刷新浏览器之后,还是会报错。总结
main-umi目前没有一点问题,很好用。main-vue目前不能很好地配合sub-umi,其他都 OK!幸好现在公司决定使用
umi做基座(完全没问题)!后续研究
后续研究下打包之后的
nginx配置,以及是否会出现问题。(能否把 vue 扳回一城?)2020.12.10 更新
下午把
docker+nginx配置进去,每个项目里面只需要执行./deploy.sh即可发布。但是依然发现,有以下问题:(原本还有即个问题被我fix了)
main-vue + sub-umihttp://localhost:8000/umi路由没任何反应 。main-umi + sub-umihttp://localhost:9000/umi一切正常。