# 微前端、微应用 ## 作为单独项目开始 ```bash yarn serve ``` ## 接入主服务 将下面的路由接入主服务中: ```js import { RouteView } from '@/layouts' // 测试微前端 export default { path: '/testMicro/index', component: RouteView, name: 'testMicro', redirect: '/testMicro', meta: { title: '测试微前端', keepAlive: false }, children: [ { path: '/testMicro', name: 'testMicroHome', meta: { title: '测试微前端home', keepAlive: true, icon: 'home', hiddenHeaderContent: true } }, { path: '/testMicro/about', name: 'testMicroAbout', meta: { title: '测试微前端about', keepAlive: true, icon: 'home', hiddenHeaderContent: true } }, ] } ``` 在``内容块中以下面代码代替: ```vue
``` `micro/apps.js`: ```js const apps = [ /** * name: 微应用名称 - 具有唯一性 * entry: 微应用入口 - 通过该地址加载微应用 * container: 微应用挂载节点 - 微应用加载完成后将挂载在该节点上 * activeRule: 微应用触发的路由规则 - 触发路由规则后将加载该微应用 */ { name: 'testMicro', entry: '//192.168.0.87:7101', container: '#frame', activeRule: '/testMicro', }, ] export default apps ``` `micro/index.js`: ```js // 一个进度条插件 import NProgress from "nprogress"; import "nprogress/nprogress.css"; // import { message } from "ant-design-vue"; import { registerMicroApps, initGlobalState, addGlobalUncaughtErrorHandler, start } from 'qiankun'; // 子应用注册信息 import apps from "./apps"; /** * 注册子应用 * 第一个参数 - 子应用的注册信息 * 第二个参数 - 全局生命周期钩子 */ registerMicroApps(apps, { // qiankun 生命周期钩子 - 加载前 beforeLoad: (app) => { // 加载子应用前,加载进度条 NProgress.start(); console.log("[qiankun]: registerMicroApps beforeLoad", app.name); return Promise.resolve(); }, // qiankun 生命周期钩子 - 挂载后 afterMount: (app) => { // 加载子应用前,进度条加载完成 NProgress.done(); console.log("[qiankun]: registerMicroApps afterMount", app.name); return Promise.resolve(); }, }); /** * 添加全局的未捕获异常处理器 */ addGlobalUncaughtErrorHandler((event) => { console.error(event); // 加载失败时提示 // if (event.message && event.message.includes("died in status")) { // message.error("[qiankun]: 子应用加载失败,请检查应用是否可运行"); // } }); // 初始化 state const actions = initGlobalState({ token: JSON.parse(localStorage.getItem('pro__Access-Token') || '{}') || {} }); actions.onGlobalStateChange((state, prev) => { // state: 变更后的状态; prev 变更前的状态 console.log("[qiankun]: onGlobalStateChange ", state, prev); }); // actions.setGlobalState({ // token: JSON.parse(localStorage.getItem('pro__Access-Token') || '{}') || {} // }); actions.offGlobalStateChange(); // 导出 qiankun 的启动函数 export default start; ``` `main.js`: ```js import startQiankun from './micro'; startQiankun(); ``` ## 编译 ```bash yarn build ```