vue3微前端架构——基于蚂蚁qiankun框架
楔子
首先,目前qiankun框架尚不支持vite,
微应用不能使用vite创建,
即使只是生产环境加的载微应用也不行,
因为vite打包代码时,内部的esbuild会tree shake掉与qiankun相关的生命周期钩子,
主应用没影响,使用什么创建项目都无所谓
主应用
没啥特殊的,随便一个组件里留个容器div
<div id="container"></div>
在一个方法内加载微应用
import { loadMicroApp } from 'qiankun';
export default {
setup(){
let create = ()=>{
loadMicroApp({
name: 'vue3',
entry: 'http://localhost:7105/',
container: '#container',
});
}
return {create};
}
}
通过路由注册微应用的方式,请自己看文档
微应用
配置文件:vue.config.js
const path = require('path');
const { name } = require('./package'); function resolve(dir) {
return path.join(__dirname, dir);
} const port = 7105; module.exports = {
outputDir: 'dist',
assetsDir: 'static',
filenameHashing: true,
devServer: {
hot: true,
disableHostCheck: true,
port,
overlay: {
warnings: false,
errors: true,
},
headers: {
'Access-Control-Allow-Origin': '*',
},
},
// 自定义webpack配置
configureWebpack: {
resolve: {
alias: {
'@': resolve('src'),
},
},
output: {
// 把子应用打包成 umd 库格式
library: `${name}-[name]`,
libraryTarget: 'umd',
jsonpFunction: `webpackJsonp_${name}`,
},
},
};
router.js
import HelloWorld from "./components/HelloWorld.vue";
import HelloWorld2 from "./components/HelloWorld2.vue";
import { createRouter, createWebHistory } from "vue-router";
const routes = [
{ path: "/", component: HelloWorld },
{ path: "/about", component: HelloWorld2 },
];
const router = createRouter({
history: createWebHistory(window.__POWERED_BY_QIANKUN__ ? "/vue3" : "/"),
routes,
});
export default router;
main.js
这里有好多钩子,是给主应用用的
if (window.__POWERED_BY_QIANKUN__) {
// eslint-disable-next-line no-undef
__webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__;
}
import { createApp } from "vue";
import App from "./App.vue";
import router from "./router";
let instance = null; function render(props = {}) {
const { container } = props; instance = createApp(App);
instance.use(router);
instance.mount(container ? container.querySelector("#app") : "#app");
} if (!window.__POWERED_BY_QIANKUN__) {
render();
} export async function bootstrap() {
console.log("%c ", "color: green;", "vue3.0 app bootstraped");
} export async function mount(props) {
render(props);
instance.config.globalProperties.$onGlobalStateChange =
props.onGlobalStateChange;
instance.config.globalProperties.$setGlobalState = props.setGlobalState;
} export async function unmount() {
instance.unmount();
instance._container.innerHTML = "";
instance = null;
}
app.vue
<template>
<button @click="go('/')">home</button>
<button @click="go('/about')">sub</button>
<router-view></router-view>
</template> <script>
import router from "./router"
export default {
setup(){
let go = (p)=>{
router.push(p)
}
return {go}
}
}
</script>
vue3微前端架构——基于蚂蚁qiankun框架的更多相关文章
- 初步认识微前端(single-spa 和 qiankun)
初步认识微前端 微前端是什么 现在的前端应用,功能.交互日益复杂,若只由一个团队负责,随着时间的推进,会越来越庞大,愈发难以维护. 微前端这个名词,第一次提出是在2016年底.它将微服务(将单一应用程 ...
- 微服务架构介绍和RPC框架对比
微服务架构介绍和RPC框架对比 1.微服务架构 1.1 特征 自动化部署,端点智能化,语言和数据的去中心化控制. 1.2架构 一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中 ...
- 远程服务调用RPC框架介绍,微服务架构介绍和RPC框架对比,dubbo、SpringClound对比
远程服务调用RPC框架介绍,微服务架构介绍和RPC框架对比,dubbo.SpringClound对比 远程服务调用RPC框架介绍,RPC简单的来说就是像调用本地服务一样调用远程服务. 分布式RPC需要 ...
- 庐山真面目之十二微服务架构基于Docker搭建Consul集群、Ocelot网关集群和IdentityServer版本实现
庐山真面目之十二微服务架构基于Docker搭建Consul集群.Ocelot网关集群和IdentityServer版本实现 一.简介 在第七篇文章<庐山真面目之七微服务架构Consul ...
- 《OneForAll框架搭建之旅》前端篇:微前端架构设计(Vue)
心之所向,勇往直前!记录开发过程中的那些小事,给自己加点经验值. 前言 作为一个.Net后端开发,在竞争愈加激烈的当下,掌握点前端配菜好像已经是家常便饭了. 刚好在工作的第5个年头,辞去小主管职务的我 ...
- .net core 跨平台开发 微服务架构 基于Nginx反向代理 服务集群负载均衡
1.概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客 ...
- 微服务架构 - 基于Harbor构建本地镜像仓库
之前写过<搭建docker本地镜像仓库并提供权限校验及UI界面>文章,然后有同仁评论道这样做太复杂了,如果Harbor来搭建会更简单同时功能也更强大.于是抽时间研究了基于Harbor构建本 ...
- 微前端框架 之 qiankun 从入门到源码分析
封面 简介 从 single-spa 的缺陷讲起 -> qiankun 是如何从框架层面解决 single-spa 存在的问题 -> qiankun 源码解读,带你全方位刨析 qianku ...
- 基于 iframe 的微前端框架 —— 擎天
vivo 互联网前端团队- Jiang Zuohan 一.背景 VAPD是一款专为团队协作办公场景设计的项目管理工具,实践敏捷开发与持续交付,以「项目」为核心,融合需求.任务.缺陷等应用,使用敏捷迭代 ...
- 微前端框架 single-spa
单体应用对比前端微服务化 普通的前端单体应用 微前端架构 1.基本概念 实现一套微前端架构,可以把其分成四部分(参考:https://alili.tech/archive/11052bf4/) 加载器 ...
随机推荐
- 启动Eclipse时报错如何解决?
启动Eclipse出现弹框,弹框报错内容如下: A Java Runtime Enviroment(JRE)or Java Development Kit(JDK) must be available ...
- Vulnhub-Troll-1靶机-ftp匿名登录+流量包分析+hydra爆破+ssh登录脚本提权
一.靶机搭建 选择扫描虚拟机 选择路径即可 二.信息收集 扫ip 靶机ip:192.168.108.144 扫开放端口 开放了ftp服务 扫版本服务信息 信息如下 21/tcp open ftp vs ...
- FastAPI 自定义参数验证器完全指南:从基础到高级实战
title: FastAPI 自定义参数验证器完全指南:从基础到高级实战 date: 2025/3/11 updated: 2025/3/11 author: cmdragon excerpt: 本教 ...
- 探秘Transformer系列之(13)--- FFN
探秘Transformer系列之(13)--- FFN 目录 探秘Transformer系列之(13)--- FFN 0x00 概述 0x01 网络结构 1.1 数学表示 1.2 中间层比率 1.3 ...
- Linux下启动Oracle命令
1.进入LInux,切换到Oracle用户权限,输入数据库密码.su - oracle 1在这里插入图片描述2.输入sqlplus "/as sysdba" 1在这里插 ...
- linux 根目录扩容方法
准备知识 linux volume 1.(PV)physical volume disk : 物理硬盘 物理硬盘需要转换成lvm(logic volume manage)可识别的状态,将磁盘的syst ...
- Delphi Richedit代码语法加亮显示
procedure CodeColors(Form : TForm;Style : String; RichE : TRichedit;InVisible : Boolean); const // s ...
- 探秘Transformer系列之(19)----FlashAttention V2 及升级版本
探秘Transformer系列之(19)----FlashAttention V2 及升级版本 目录 探秘Transformer系列之(19)----FlashAttention V2 及升级版本 0 ...
- 《机器人SLAM导航核心技术与实战》第1季:第0章_SLAM发展综述
<机器人SLAM导航核心技术与实战>第1季:第0章_SLAM发展综述 视频讲解 [第1季]0.第0章_SLAM发展综述-视频讲解 [第1季]0.1.第0章_SLAM发展综述-梳理定位导航技 ...
- 重生之我是操作系统(五)----CPU调度
简介 当CPU有大量任务要处理,但由于资源有限,无法同时处理.所有就需要某种规则来决定任务处理的顺序,这就是调度. 调度层次 根据调度频率与层次,共分为三种 高级调度 也称为作业调度(Long-Tre ...