关于qiankun:vue-项目作为子应用-接入-qiankun-框架-改造笔记
qiankun 官网:https://qiankun.umijs.org/zh/ vue 微利用官网文档:https://qiankun.umijs.org/zh/guide/tutorial#vue-%E5%BE%AE%E5%... 先看官网文档介绍的步骤:1,增加并引入 public-path.js官网代码如下: if (window.__POWERED_BY_QIANKUN__) { __webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__;}qiankun 框架在加载微利用时,会给微利用注入一些全局变量,其中蕴含了 POWERED_BY_QIANKUN 和 INJECTED_PUBLIC_PATH_BY_QIANKUN 这两个变量。 POWERED_BY_QIANKUN 是一个布尔值,用于判断以后利用是否是在 qiankun 框架下运行。INJECTED_PUBLIC_PATH_BY_QIANKUN 是在运行时注入的以后微利用的动态资源门路。 通过判断 POWERED_BY_QIANKUN 变量的值,能够确定以后利用是否在 qiankun 框架下运行。如果是,则将 INJECTED_PUBLIC_PATH_BY_QIANKUN 的值赋给 __webpack_public_path__,这样在动静加载资源时,Webpack 就会应用正确的门路来加载模块。 这种动静设置 publicPath 的形式能够确保在微利用中动静加载的资源门路都是正确的,使得微利用可能失常运行在 qiankun 框架的环境中。 2,入口文件 main.js 批改,为了防止根 id #app 与其余的 DOM 抵触,须要限度查找范畴集体对这句话的了解是一个零碎内会接入多个微利用,也就可能会有多个 #app 所以代码里就有了 container ? container.querySelector('#app') : '#app'因为 container 是从基座(主利用)传过来的,具体原理不做剖析,照着官网写就好了。官网代码片段如下: import './public-path';import Vue from 'vue';import VueRouter from 'vue-router';import App from './App.vue';import routes from './router';import store from './store';Vue.config.productionTip = false;let router = null;let instance = null;function render(props = {}) { const { container } = props; router = new VueRouter({ base: window.__POWERED_BY_QIANKUN__ ? '/app-vue/' : '/', mode: 'history', routes, }); instance = new Vue({ router, store, render: (h) => h(App), }).$mount(container ? container.querySelector('#app') : '#app');}// 独立运行时if (!window.__POWERED_BY_QIANKUN__) { render();}export async function bootstrap() { console.log('[vue] vue app bootstraped');}export async function mount(props) { console.log('[vue] props from main framework', props); render(props);}export async function unmount() { instance.$destroy(); instance.$el.innerHTML = ''; instance = null; router = null;}其中 bootstrap,mount,unmount 就是生命周期钩子,在官网文档中介绍生命周期钩子应用react做的实例,在这里:https://qiankun.umijs.org/zh/guide/getting-started#1-%E5%AF%B... ...