qiankun 微前端 Demo

上代码,不多说。

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这个框架很好用。子项目可以独立运行,独立部署,沙箱隔离。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值