npm i @micro-zoe/micro-app --save
//main.js
import microApp from '@micro-zoe/micro-app'
//这个代码放在new Vue() 下面
microApp.start()
就是访问这个路由菜单的时候加载子应用
import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
import home from '../view/home/index.vue'
const routes = [
{
path: '/',
name:'home',
component:home,
children:[
{
path: '/child1*',
name:'sex',
component:() => import(/* webpackChunkName: "nextjs11" */ '../view/sex/index.vue'),
},
{
path: '/child2*',
name:'user',
component: () => import(/* webpackChunkName: "nextjs11" */ '../view/user/index.vue'),
},
{
path: '/child3*',
name:'user',
component: () => import(/* webpackChunkName: "nextjs11" */ '../view/oa/index.vue'),
}
]
},
]
export const router = new VueRouter({
mode: 'history',
routes
})
在
vue.config.js
中添加配置
devServer: {
headers: {
'Access-Control-Allow-Origin': '*',
}
}
//我是在router的index.js ,也就是在存放 new Router 这里,
const router = new Router({
scrollBehavior: () => ({ y: 0 }),
base: window.__MICRO_APP_BASE_ROUTE__ || process.env.BASE_URL, //添加这行代码就可以了
routes: constRouter
})
我这不是webpack的项目,我跳过这个步骤
下面这两个是如何使用
//新建一个 public-path.js
if (window.__MICRO_APP_ENVIRONMENT__) {
// eslint-disable-next-line
__webpack_public_path__ = window.__MICRO_APP_PUBLIC_PATH__
}
在main最顶部导入,也就是子应用入口文件的第一行代码是这个
import './utils/public-path'
import Vue from 'vue'
子应用被卸载时会接受到一个名为
unmount
的事件,在此可以进行卸载相关操作
const app = new Vue({
el: '#app',
router,
store,
i18n,
render: h => h(App)
})
// 监听卸载操作,这个代码 也是放在new Vue()之后哦
window.addEventListener('unmount', function() {
app.$destroy()
})