# qiankun
**Repository Path**: ifercarly/qiankun
## Basic Information
- **Project Name**: qiankun
- **Description**: qiankun~~~~~~~~~
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-08-01
- **Last Updated**: 2023-08-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
[qiankun](https://qiankun.umijs.org/zh/)
[你可能并不需要微前端](https://www.yuque.com/kuitos/gky7yw/fy3qri)
[文章](https://zhuanlan.zhihu.com/p/551206945)
## 建项目
```bash
vue create v2
```
```bash
npm create vite@latest
```
## 主应用
1\. 安装乾坤。
```bash
npm i qiankun
```
2\. 新增配置文件。
`src/resisterMicroApp.js`
```js
import { registerMicroApps, start } from 'qiankun'
registerMicroApps([
{
name: 'hmzs-big-screen', // 子应用名称
entry: '//localhost:5173', // 子应用运行的服务地址
container: '#container', // 子应用挂载的容器
activeRule: '/big-screen' // 访问哪个路由时加载子应用
}
])
start()
```
3\. 入口文件加载配置。
`main.js`
```js
// 启动微前端配置
import './registerMicroApp'
```
4\. 配置子应用加载的位置。
`src/App.vue`
```html
```
## 子应用
1\. 配置 `vite-plugin-qiankun` 插件。
```bash
npm i vite-plugin-qiankun -D
```
`vite.config.js`
```ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import qiankun from 'vite-plugin-qiankun'
// https://vitejs.dev/config/
export default defineConfig({
plugins: [
vue(),
// 这里的名称要和主应用改造时配置项中的 name 保持一致
qiankun('hmzs-big-screen', {
useDevMode: true
})
],
server: {
// 防止开发阶段的 assets 静态资源加载问题
origin: '//localhost:5173'
}
})
```
2\. 入口文件改造。
`main.ts`
```ts
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import { renderWithQiankun, qiankunWindow } from 'vite-plugin-qiankun/dist/helper'
import './styles/common.scss'
renderWithQiankun({
mount (props) {
console.log('mount')
render(props)
},
bootstrap () {
console.log('bootstrap')
},
unmount (props) {
console.log('unmount', props)
},
})
// 当前应用程序是否在 qiankun 容器中运行,如果不在,就挂载到当前项目的 #app 中
if (!qiankunWindow.__POWERED_BY_QIANKUN__) {
render({})
}
function render (props = {}) {
const { container } = props
const app = createApp(App)
app.use(router)
app.mount(container ? container.querySelector("#app") : "#app")
}
```
## 3D

`App.vue`
```html
```
`components/LoadingComponent.vue`
```html
```
`components/LoadingComponent.vue`
```html
```
`style.css`
```css
*{
margin: 0;
padding: 0;
}
html,body,#app{
height: 100%;
}
```