Microapp 接入vite子应用
一、子应用
官网教程:https://micro-zoe.github.io/micro-app/docs.html#/zh-cn/framework/vite
1,步骤一:修改vue.config.js/vue.config.ts
❗注意:
(1)根据官方教程,basename需要更换的!
(2)plugin:[] 里面保留vue(),再加上自定义插件的内容!
(3)记得配置跨域!
import { join } from 'path'
import { writeFileSync } from 'fs'
// vite.config.js
export default defineConfig({base: `${process.env.NODE_ENV === 'production' ? 'http://my-site.com' : ''}/child-vite/`,plugins: [vue(), //这个不要删掉,亲测踩坑过,不要删// 自定义插件(function () {let basePath = ''return {name: "vite:micro-app",apply: 'build',configResolved(config) {basePath = `${config.base}${config.build.assetsDir}/`},writeBundle (options, bundle) {for (const chunkName in bundle) {if (Object.prototype.hasOwnProperty.call(bundle, chunkName)) {const chunk = bundle[chunkName]if (chunk.fileName && chunk.fileName.endsWith('.js')) {chunk.code = chunk.code.replace(/(from|import\()(\s*['"])(\.\.?\/)/g, (all, $1, $2, $3) => {return all.replace($3, new URL($3, basePath))})const fullPath = join(options.dir, chunk.fileName)writeFileSync(fullPath, chunk.code)}}}},}})(),],
})
server: {port: 8081,//这个端口就是主应用挂载的url端口headers: {'Access-Control-Allow-Origin': '*' //记得配置跨域}}
2,步骤二:修改index.html的id名字
3,步骤三:同步修改main.js/main.ts挂载的容器
4,检查路由是否是history模式
到这里,可以去检验一下改好的子应用有没有问题,能不能正常跑,有问题及时调试,如果按照上面修改的话,最后跑起来的地址在应该是:
http://localhost:8081/child-vite/#/home;
❗注意:
(1)child-vite 就是你修改的 basename !
(2)home就是你路由redirect的那个路径,你也可以自己修改的,懂的哈!
二、主应用
接入vite子应用和接入其他的子应用大部分步骤一样,可以参考我前面的文章(若依vue3 前端微应用改造),不一样的部分就是main.js里面的microApp.start()方法需要修改;我们按顺序来吧。
1,步骤一:下载microapp依赖
npm i @micro-zoe/micro-app --save 或 yarn add micro-zoe/micro-app --save
2,步骤二:main.js/main.ts引入microapp并且改写
// 放在顶部
import microApp from'@micro-zoe/micro-app'
microApp.start({plugins: {modules: {// appName即应用的name值'micro-app': [{loader(code) {if (process.env.NODE_ENV === 'development') {// 这里 basename 需要和子应用vite.config.js中base的配置保持一致code = code.replace(/(from|import)(\s*['"])(\/child-vite\/)/g, all => {return all.replace('/child-vite/', 'http://localhost:8081/child-vite/')})}return code}}]}}
})
3,步骤三:router/index.js留一个给子应用挂载页面的路由
{path: '',component: Layout,redirect: '/index',children: [{path: '/index',component: () => import('@/views/micro/micro2/index'),//根据相应的路径创建文件name: 'Index',meta: { title: '首页', icon: 'dashboard', affix: true }}]},
注意:我这上面是若依的index的路由,你可以根据自己的路由创建文件和路径;
4,步骤四:创建的页面里面挂载子应用端口
<micro-app :name="micro-app" :url="http://localhost:8081/" //你在子应用vite.config.ts里面配的端口baseRoute="/micro-app" //这个官网说失效,我忘记删了,根据情况试试吧:data="dataForChid" @datachange="handleDataChange"inline //官网要加的属性disableSandbox //官网要加的属性,关闭沙箱keep-alive style="height: 100%"></micro-app>
好了,大功告成了,可以试试启动主应用,有没有报错,进行调试;
三、报错案例
(1)错1:
说明子应用的vue()没加上,或者不小心给删掉了,记得给加上
(2)错2:
这个说明主应用的microApp.start()里面的配置写错了,或者和子应用配置的basename不一致,再去检查一下;
以上都是亲自踩过的错,能够解决的,另外可以去看官方的demo案例,看不同版本的实际写法,能够帮助你调试出错的问题:https://github.com/micro-zoe/micro-app-demo;
四,公测版:
另外官网现在有了公测版,如果是公测beta版本接入vite不需要修改vite.config.js也不需要在基座设置插件处理;可以参考这个的链接方法:https://micro-zoe.com/docs/1.x/#/zh-cn/framework/vite;
1,步骤一:主应用下载依赖
npm i @micro-zoe/micro-app@beta --save
yarn add @micro-zoe/micro-app@beta --save
2,步骤二:切换iframe沙箱
3,步骤三:关闭虚拟路由
microApp.start({'disable-memory-router': true, // 关闭虚拟路由系统'disable-patch-request': true, // 关闭对子应用请求的拦截
})
亲测了,其他不是vite的子应用不受影响,至于会不会有后续的问题,可以关注官网的情况。希望对大家能够有所帮助,可以进官网的官方群里问问里面的大佬们,另外vite版本好像9月份会再更新,记得关注官网的消息哦,创作不易,多多点赞。
Microapp 接入vite子应用相关推荐
- 微前端qiankun接入Vite子应用含Vue3和React18
主应用basic-vue-app(vue3+vite) 安装qiankun npm install qiankun 新建src/qiankun/index.js文件,进行单独的抽离 import { ...
- 【几乎最全/全网最长的 2 万 字】前端工程化完整流程:从头搭到尾(vue3 + vite + qiankun + docker + tailwindcss + iview......)
文章目录 一.完整构建流程 1.在指定目录下执行 pnpm init,初始化 package.json 2.执行 pnpm install vite -D,安装 vite. 3.package.jso ...
- microapp微前端基础使用
一开始我使用的是qiankun作为微前端框架 但是接入后发现改动成本太大了需要改子应用的打包模式 又要父应用丢出方法 所以选择microapp微前端 听说这玩意接入比较方便点 基础使用demo 首先要 ...
- 微前端MicroApp的学习(一):简单搭建项目
前言 最近公司框架升级,微前端选择了京东的MicroApp ,因为后续会参与开发.提前来学习一波. 推荐文章 极致简洁的微前端框架-京东MicroApp开源了 初探 MicroApp,一个极致简洁的微 ...
- 微前端 - micro-app 数据通信
前言 上文记录了如何在项目中接入 micro-app,本文主要记录下微前端基座应用和子应用之间的数据通信. 一. 基座应用向子应用发送数据 方式1:通过 data 属性发送数据 <templat ...
- ABG(应用负载网关)——终端共享接入检测方案、智能链路负载均衡(LLB)
一.终端共享接入检测方案 1.1 共享接入检测新功能 支持对接入终端超限IP进行日志记录.告警干扰: 支持针对指定IP进行共享接入检测: 支持对接入终端的品牌/型号/操作系统进行识别: 用户可按需升级 ...
- micro-app的简单学习
简述 本文承接上一篇手把手教你使用vue2搭建micro-app对micro-app进行简单的认识与学习. 因为上一篇只是对micro-app的搭建,并没有对具体的内容进行深入了解,所以本文是在上一篇 ...
- umi +qiankun 主应用动态装载子应用(路由)解决方案
umi +qiankun 主应用动态装载子应用(路由)解决方案 前言 接上一篇(https://www.yuque.com/blueju/blog/gtgndg),上一篇中使用的都是运行时动态注册子应 ...
- vue2 项目接入 vite2 参考指南
本文整理 vue2 项目接入 vite2 需要注意的事项. 基本配置 首先我们需要在项目中安装 vite:其次,要支持 vue2 还需要安装 vite-plugin-vue2. npm install ...
最新文章
- 《信息学奥赛一本通》 高精除以低精。输入两个正整数,求它们的商(做整除)。
- python的应用图标_python实现根据图标提取分类应用程序实例
- python下载图片到文件夹_请教大佬:下载图片,运行后文件夹创立了,但里边没有图,为什么...
- Flutter Trying to embed a platform view but the PrerollContext does not support embedding
- 二进制拆弹实验详解_Population Count算法-求二进制数中1的个数
- 注册登录时本地图片验证码
- Python对zip、tgz、rar压缩包的解压与读取
- 服务器位置设置在哪,服务器位置设置在哪
- java调用百度语音接口
- 双麦阵列回音消除及降噪模块 A-47
- 韩剧Search[1992-2005]
- 【013】故宫博物院数字文物库-让文物随时可赏
- Window Server 2012许可证过期解决方法
- android国际化语言编码对照表
- 名校女教授,强迫其男博士“发生性关系多年”!索赔750万
- 【OpenGL】绘制一个点
- 什么是温度传感器?温度传感器原理是什么?一文带你全部搞懂
- contentEditable,window.getSelection详解---可编辑div,容器,设置/获取光标位置,光标处插入内容及光标的操作
- 阿里员工感慨:涂鸦和阿里之间选了阿里,涂鸦上市了,小丑竟是我自己
- 触目惊心的股市圈钱骗局:阴谋
热门文章
- 【洛谷】P1803 凌乱的yyy 题解
- 数据结构二叉树先序遍历
- 【2018 国庆雅礼 NOIP 培训】OI七天乐
- 无线视频监控系统 PHP,基于ARM的无线视频监控系统的解决方案
- CMD命令行升级pip失败解决方法
- ASA-HA-FO-A/S
- 京东热2:约架是怎么变成约炮的
- PCL+Qt+VS可视化点云(二)出现 no override found for ‘vtkRenderWindow’错误解决方法
- 一年级前一学期计算机应用题,2011-2012学年第一学期〈一年级计算机应用基础〉期中考试试卷...
- Tesseract在安装过程中出现Download error Status of equ: Send Request Error. Click OK to continue!!!已解决#附安装包