import { registerApplication } from 'single-spa' registerApplication({ name:'app', app: () => { loadScripts('./chunk-a.js'); loadScripts('./chunk-b.js'); return loadScripts('./entry.js') } }) singleSpa.start()
传统代码提交流程
微前端代码提交流程
核心思想:
借鉴了WebComponent的思想,通过CustomElement结合自定义的ShadowDom,将微前端封装成一个类WebComponent组件,从而实现微前端的组件化渲染。
整体架构思路为:CustomElement + HtmlEntry
生命周期、环境变量、虚拟路由、JS沙箱、样式隔离、元素隔离、数据通信、等等
标签初始化后,加载资源前触发。
- _MICRO_APP_PUBLI_PATH_ - _MICRO_APP_BASE_ROUTE_
通过虚拟路由系统,我们可以方便的进行导航守卫、跨应用的跳转、提升开发效率、并且子应用运行在这套虚拟路由系统中,和主应用的路由进行隔离,避免相互影响,如:
确保子应用之间 全局变量/事件不冲突
元素隔离的概念来自ShadowDom,即ShadowDom中的元素可以和外包的元素重复但不会冲突,micro-app模拟实现了类似ShadowDom的功能,元素不会逃离 预加载、缓存等等数据通信
其他能力
兼容性
Micro-app接入注意
官方网站:https://micro-zoe.github.io/micro-app/构建micro-app基座(以vue3为基座)
// 初始化vue3项目 以vue3为基座 npm init vue@latest // 下载vue-router npm install vue-router@4.0.12 --save