qiankun 微前端 Demo

本文档详细介绍了如何配置基座项目和子项目以实现qiankun微前端架构。基座项目中,主要配置了main.js,引入vue、element-ui,并注册子应用。子项目配置包括main.js、路由、vue.config.js,确保路由base正确设置,以避免路由匹配问题。qiankun框架使得子应用可以独立运行和部署,且具有沙箱隔离。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上代码,不多说。

qiankun 需要一个基座项目,下面这个就是基座vue项目的main.js的配置。

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'

import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';



Vue.use(ElementUI);



import {registerMicroApps, start} from 'qiankun'


const apps = [
  {
    name: 'vue',
    entry: '//192.168.1.50:80',
    // entry: 'http://localhost:12345/vue',
    container: '#vue',
    activeRule: '/vue',
    props: {
      store
    }
  }
]

registerMicroApps(apps)

start()


Vue.config.productionTip = false

new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

App.vue文件的配置

<template>
  <div>


<el-menu :router="true" class="el-menu-demo" mode="horizontal">
  <el-menu-item index="/">home</el-menu-item>
  <el-menu-item index="/vue">vue</el-menu-item>
</el-menu>



    <router-view/>
    <div id="vue"></div> 这个就是子项目需要加载时的目标坑位
  </div>
</template>

<style>

</style>

以上就是基座项目的基本配置。其中mian.js 中的 props可以传递给子项目。

 

 

下面是子项目的配置

main.js的配置信息。

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'


let instance = null;
function render() {
    instance = new Vue({
        router,
        store,
        render: h => h(App)
    }).$mount('#app')
}


if (!window.__POWERED_BY_QIANKUN__) {
    /* eslint-disable */ 
    render()
} else {
    __webpack_public_path__ = window.__INJECTED_PUBLIC_PATH_BY_QIANKUN__;
}


export async function bootstrap() {

}
export async function mount(props) {
    console.log(props, 11)

    render(props)

}
export async function unmount(props) {
    instance.$destroy()
    console.log(props)
}

下面是route配置

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../views/Home.vue'

Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home
  },
  {
    path: '/about',
    name: 'About',
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () => import(/* webpackChunkName: "about" */ '../views/About.vue')
  }
]

const router = new VueRouter({
  mode: 'history',
  base: '/vue',
  routes
})

export default router

注意:路由的base一定要配置,如果配置不正确,会出现子项目路由匹配不到。

下面是vue.config.js 配置信息

module.exports = {
    publicPath: '/vue',
    devServer: {
        port: 12345,
        headers: {
            'Access-Control-Allow-Origin': '*'
        }
    },
    configureWebpack: {
        output: {
            library: 'vue1',
            libraryTarget: 'umd'
        }
    }
}

以上两个项目都是用vue脚手架生成的 版本是3.0.

qiankun这个框架很好用。子项目可以独立运行,独立部署,沙箱隔离。

### 乾坤微前端框架与React结合使用教程 #### 创建React子应用 为了创建一个可以作为微前端使用的React子应用,推荐使用`create-react-app`来初始化项目环境[^1]。这一步骤简化了许多配置工作,使得开发者能够专注于业务逻辑的开发。 ```bash npx create-react-app my-microfrontend-app cd my-microfrontend-app npm start ``` #### 配置生命周期函数 为了让React应用成为qiankun兼容的应用程序,需要定义特定的生命週期钩子——`bootstrap`, `mount`, 和 `unmount`。这些方法允许主应用程序控制子应用的行为,在加载、渲染和卸载阶段执行必要的操作[^3]。 ```javascript import React from 'react'; import ReactDOM from 'react-dom/client'; import App from './App'; const render = (props) => { const container = document.getElementById('root'); const root = ReactDOM.createRoot(container); root.render(<App />); }; // 初始化时调用 export async function bootstrap() { console.log('React app bootstrapped'); } // 加载组件并将其挂接到DOM树上 export async function mount(props) { render(props); } // 卸载组件前清理资源 export async function unmount() { const container = document.getElementById('root'); const root = ReactDOM.createRoot(container); root.unmount(); } ``` #### 注册子应用至QianKun Shell Application 最后一步是在壳应用中注册这个新创建的React子应用。通过向shell application传递相应的参数完成这一过程,包括名称、入口URL和其他选项[^4]。 ```javascript import { registerMicroApps, start } from 'qiankun'; registerMicroApps([ { name: 'my-react-subapp', entry: '//localhost:3000', // 子应用的服务地址 container: '#subapp-container', activeRule: '/react' } ]); start(); // 启动qiankun ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值