乾坤实战 采坑之旅(主应用的某个路由页面加载微应用)

本文详细介绍了使用qiankun实现Vue3微应用的集成,包括子应用与主应用的交互、public-path.js的处理、路由配置、子路由创建、图片路径问题、Nginx代理配置等。同时,还涉及到Vite的接入、 Pinia状态管理、Vue Router的使用以及路由守卫的实现,以及解决样式冲突的方法。

1.子应用不需要安装乾坤
2.主应用不需要public-path.js
3.start方法应该写在对应的子路由页面 id也应该对应写在挂在页面

if (!window.qiankunStarted) {
   
   
      window.qiankunStarted = true;
      start();
    }
    <div id="appContainer" />

此处最重要的一个关键点事需要再路由页面增加
在这里插入图片描述
必须写在下面 我写在上面无效
4.写与子路由对应的两层路径
在这里插入图片描述
5.子路由的创建必须写在render里 我刚开始为了方便写在路由页面 并且路由必须置空失活的时候否则导致回不去主应用
在这里插入图片描述
在这里插入图片描述
6.图片路径的问题
在这里插入图片描述
增加publiePath 我当时增加了 但是一直不生效 最后发现 代码里写的css url 没有~因为是less不加这个这个loader不编译 这个坑我半天
7.nginx配置问题
在这里插入图片描述
在这里插入图片描述
我原本想直接代理到字应用 但是想到不想影响子应用就自己新增加一个路径 此处有个问题就是我们的js和html没在一个目录 所以 代理到了 html代理不到js两个互斥 后来才发现 index可以指定路径 还有就是alias与root的区别就是一个呆代理路径的路径一个不带

上面理解有误并不是 index后面的找到了html界面 而是 根据匹配原则 它又去 匹配 /后面的 内容 找到了html 目前可知 nginx里 / 是优先级最低的 匹配项

同样的问题另外一种解决方案

    location  /nginxui/ {
   
   
        root   /html/;    
        #try_files $uri $uri/ /index.html;
        #index  index.html index.htm;
	   try_files $uri $uri/index.html /500.html; 
#	   index index_prod.html; # 不需要, tryfiles 已经指定 }

    }

http://47.93.212.24:8183/nginxui/assets/index-373f168f.js
root 的目录有/则表示根目录下面 没有则表示ngxin的安装目录,try-files $uri表示我此次请求的路径 加上我的root路径
css/js 可以理解为/html//nginxui/assets/index-373f168f.js 而index.html 因为是请求路径只有nginxui所以完整路径就是
/html/nginxui/index.html

处理静态页面集成qiankun
在这里插入图片描述

vue3 vite接入
1.增加插件
在这里插入图片描述
2.public-path
在这里插入图片描述
3.main.ts

import {
   
   createApp} from 'vue'
import {
   
   createPinia} from 'pinia'
import gettext from './gettext'
import './public-path'
import App from './App.vue'
import {
   
   router} from './routes'
import routerEach from './routes/routerEach';
//import 'ant-design-vue/dist/antd.less'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
import {
   
   useSettingsStore} from '@/pinia'
import {
   
    renderWithQiankun, qiankunWindow } from 'vite-plugin-qiankun/dist/helper'
debugger
let app:any = null
let _router = null
// 独立运行时
if(!qiankunWindow.__POWERED_BY_QIANKUN__) {
   
   

    const pinia = createPinia()

    app = createApp(App)

    pinia.use(piniaPluginPersistedstate)
    app.use(pinia)
    app.use(gettext)
    // after pinia created
    const settings = useSettingsStore()
    gettext.current = settings.language || 'en'
    _router = router('');
    routerEach(_router);
    app.use(_router).mount('#app')

} else {
   
   
  // 作为微应用运行
  renderWithQiankun({
   
    // 调用renderWithQiankun
    mount(props) {
   
   
      app = createApp(App)
      const pinia = createPinia()
      pinia.use(piniaPluginPersistedstate)
      app.use(pinia)
      app.use(gettext)
      app.config.globalProperties.__POWERED_BY_QIANKUN__ = qiankunWindow
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值