一个简单的前端微服务部署--qiankun

qiankun:基于single-spa封装,开箱即用。

一、主应用接入

1、安装qiankun

TypeScript 复制代码
npm i qiankun -S

2、主应用注册子应用

TypeScript 复制代码
//children-app.ts
import { registerMicroApps } from 'qiankun';
import shared from "./shared";
registerMicroApps([
  {
    name: 'subapp',
    entry: 'http://localhost:3001',
    container: '#subapp',
    activeRule: '#/subapp'
  }
]);

//入口文件 main.ts
import './children-app';

3、在主应用的路由页面加载子应用

TypeScript 复制代码
import { start } from 'qiankun';
onMounted(() => {
  if (!window.qiankunStarted) {
    window.qiankunStarted = true;
    start();
  }
})

二、子应用接入

1、安装

TypeScript 复制代码
npm i qiankun vite-plugin-qiankun -S

2、修改打包配置项

TypeScript 复制代码
//vite.config.ts
import qiankun from 'vite-plugin-qiankun';
export default defineConfig({
  base: 'http://localhost:3001/', //base设为绝对路径
  plugins: [
    vue(),
    qiankun('flow-graph', {
      useDevMode: true
    })
  ]
});

3、修改入口文件

TypeScript 复制代码
//main.ts
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import {
  renderWithQiankun,
  qiankunWindow
} from 'vite-plugin-qiankun/dist/helper';
if (!qiankunWindow.__POWERED_BY_QIANKUN__) {
  createApp(App).use(router).mount('#app');
} else {
  let app: VueApp<Element>;
  renderWithQiankun({
    mount(props) {
      console.log('--mount');
      app = createApp(App);
      app
        .use(router)
        .mount(
          (props.container
           ? props.container.querySelector('#app')
           : document.getElementById('app')) as Element
        );
    },
    bootstrap() {
      console.log('--bootstrap');
    },
    update() {
      console.log('--update');
    },
    unmount() {
      console.log('--unmount');
      app?.unmount();
    }
  });
}
相关推荐
子兮曰7 小时前
把 649 种文件格式塞进一个网页里:一个「文件不出浏览器」的预览器
前端·javascript·后端
sm_9267870510 小时前
RFID 标签打印的技术实现要点与二次开发实践
java·大数据·前端·c++·编辑器
IMPYLH10 小时前
HTML 的 <video> 元素
前端·html
溪语流沙11 小时前
【每天一个CSS | Day19】流光文字与一笔写成的手写签名
前端·javascript·css
逐光者93311 小时前
STM32——SPI 屏 · Flash · 高速
java·前端·stm32
To_OC11 小时前
同样是让 AI 写全栈,为什么别人一句话就够了
前端·前端框架·next.js
CDwenhuohuo11 小时前
electron pc项目打包成桌面端
前端·javascript·electron
前端大斗师11 小时前
「大于 1000」把 1000 元那单也算进去了:我在 Vue3 订单页对了 10 句话
前端·人工智能·typescript·大模型·原力计划
Jmyd012312 小时前
用 Web VR 引擎搭建 3D 虚拟展厅:从素材上云到多端实时渲染的完整数据链路
前端·3d·vr·三维数字化
刘天远13 小时前
Agent成本核算实现:事件表、状态分布与Python归集
前端·数据库·人工智能·python