主应用:一个主应用代表一个工作台,即主应用就是工作台。承担的职责:顶部+左侧导航、微前端核心的启动、聚合子应用。主应用本身不包含任何业务逻辑
子应用:具体业务模块的集合,对外提供业务能力
web端应用部署上线后,都是以静态资源的形式存在的,如入口index.html、js、css等。微前端形势下,主应用与子应用有不同的职责,所以两个应用所需要提供的资源类型也有所差别:
{
js: [
"http://nos.netease.com/mailpub/hxm/yanxuan-ape/js/xxxx.js"
],
css: [
"http://nos.netease.com/mailpub/hxm/yanxuan-ape/css/xxxx.css"
]
}
微前端项目的访问地址一般为/{主应用contextPath}/{子应用contextPath},由两段path组成。第一段为主应用的contextPath,第二段为子应用contextPath。以品控工作台为例:品控主应用的contextPath为 /qc, 品控核心业务模块的子应用contextPath为 /qcbase, 那访问品控核心业务模块子应用的路径为: /qc/qcbase
以浏览器发起 /qc/qcbase 请求为例,介绍微前端运行时:
/qc/qcbase的请求发到主应用node服务,主应用返回入口index.html
浏览器渲染 index.html,并完成主应用静态资源的加载,完成导航、微前端runner的加载
微前端runner,发起 /qc/qcbase/xhr/config/get.json 的请求,获取 qcbase对应子应用的静态资源信息
config/get.json请求到达子应用node服务,子应用返回相关配置信息
微前端runner拿到配置信息,并根据配置信息中静态资源的地址以及加载顺序,动态生成对应的dom,添加到html中
浏览器加载子应用的静态资源文件
子应用完成bootstrap操作,开始响应路由变化。/qc/qcbase/#welcome, /qc/qcbase/#userlist等相同path下的路由切换,皆由该子应用处理
子应用间进行切换,如/qc/qcbase -> /qc/mf-umc。微前端runner会进行一次window.reload(通过一些技术手段,让用户感知不到这是reload)。
然后重新执行 1-7步
请求处理
微前端主应用与子应用集成有两种方式:1. 主应用+Apolloy 2. API网关。两种方式下,请求处理有所差异
主应用+Apolloy