网站首页 > 技术文章 正文
1、主应用配置
1.1 安装qiankun插件
yarn add @umijs/plugin-qiankun -D
1.2 在主应用中配置子应用
在配置文件config中配置qiankun相关参数。
//config.ts
import micro from './micro';
const { REACT_APP_ENV } = process.env;
export default defineConfig({
qiankun: micro[REACT_APP_ENV || 'dev'],
}
在micro文件中根据开发环境、测试环境、生产环境分别配置不同的参数。
// micor.ts
export default {
dev: {
master: {
// 注册子应用信息
apps: [
{
name: 'vue', // 唯一 id
entry: '//localhost:7105', // html entry
},
],
},
},
test: {
master: {
// 注册子应用信息
apps: [
{
name: 'vue', // 唯一 id
entry: 'https://vue.XXXX.com', // html entry
},
],
},
},
prod: {
master: {
// 注册子应用信息
apps: [
{
name: 'vue', // 唯一 id
entry: 'https://vue.XXXX.cn', // html entry
},
],
},
}
}
1.3 通过路由绑定方式装载子应用
// routes.ts
export default [
name: 'vue',
path: MICRO_VUE_ACTIVE_RULE,
microApp: 'vue',
microAppProps: {
autoSetLoading: true,
},
routes: [
{
name: 'home',
path: `${MICRO_VUE_ACTIVE_RULE}/dashboard/analysis`,
microApp: 'vue',
},
{
name: 'about',
path: `${MICRO_VUE_ACTIVE_RULE}/about/index`,
microApp: 'vue',
},
]
]
2、子应用配置
2.1 在src目录下增加public-path.js文件
// public-path.js
if (window.__POWERED_BY_QIANKUN__) {
// eslint-disable-next-line no-undef
__webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__;
}
2.2 修改入口文件main.ts
// main.ts
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();
}
/**
* bootstrap 只会在微应用初始化的时候调用一次,下次微应用重新进入时会直接调用 mount 钩子,不会再重复触发 bootstrap。
* 通常我们可以在这里做一些全局变量的初始化,比如不会在 unmount 阶段被销毁的应用级别的缓存等。
*/
export async function bootstrap() {
console.log('[vue] vue app bootstraped');
}
/**
* 应用每次进入都会调用 mount 方法,通常我们在这里触发应用的渲染方法
*/
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;
}
2.3 修改vue.config.js配置
// vue.config.js
const { name } = require('./package');
module.exports = {
devServer: {
headers: {
'Access-Control-Allow-Origin': '*',
},
},
configureWebpack: {
output: {
library: `${name}-[name]`,
libraryTarget: 'umd', // 把微应用打包成 umd 库格式
jsonpFunction: `webpackJsonp_${name}`,
},
},
};
- 上一篇: 如何学习微信小程序开发?掌握这些编程语言和技能就够了!
- 下一篇: Alpine.js:轻量级前端框架
猜你喜欢
- 2024-11-30 微信小程序开发指引
- 2024-11-30 Alpine.js:轻量级前端框架
- 2024-11-30 如何学习微信小程序开发?掌握这些编程语言和技能就够了!
- 2024-11-30 小程序开发工具有哪些
- 2024-11-30 程序员上车啦!次世代开源AI前端框架来了,助你轻松开发AI应用
- 2024-11-30 初学者程序员要学好.Net,只要学习这几个框架就够了
- 2024-11-30 相比React、vue资源消耗更小,使用更简单的新一代前端框架Svelte
- 2024-11-30 微信小程序分包
- 2024-11-30 适用于Uniapp快速开发小程序的5个开源UI框架
- 2024-11-30 前端框架太多太复杂,HTMX助你回归简单编程
你 发表评论:
欢迎- 最近发表
-
- 用AI做微信小程序的完整步骤_如何用ai制作微信表情包
- 自习室预约的微信小程序设计与实现-计算机毕业设计源码+LW文档
- 微信小程序开发入门指南_微信小程序开发入门教程
- 写字机器人好用吗? 组装就花了5个小时 还要学习软件、录入字体
- 白描网页版 - 高效准确且免费的OCR文字识别工具
- 字体图形面板与图标字体使用_字体图标的优势和劣势
- 作为前端工程师必须懂得的33个CSS核心概念
- Flutter程序员开发炫酷的登录页面 字体库运用 路由学习 源码分享
- 2025Q3开源字体盘点:让你的代码和文档'颜值'飙升!
- Agent杂谈:Agent的能力上下限及「Agent构建」核心技术栈调研分享~
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- oracle面试 (55)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)