Skip to content

目标

之前我只是确认了诸如qiankun等工具对我没有帮助,直到遇到无法克服的问题,我才不得不自行设计一个框架 当时摆在我面前的是这么一个情况:

  1. 最新的项目和未来的项目都是vite构建
  2. 很多老旧的项目仍是服务端渲染,不是ssr而是类似jsp,没有使用到vue等视图框架
  3. 通过浏览器插件,往现有项目直接插入仪表盘,且保持隔离,尤其是样式隔离
  4. 老旧项目若作为子项目,应保留seo的效果
  5. 模块联邦的部分也要进行隔离

这也就等同于

  1. 框架能够优先支持esm,而非仅仅兼容
  2. 没有使用视图框架,意味着没办法通过vue.mount/vue.destroy控制应用挂载与卸载,很难编写暴露的生命周期钩子 框架必须保证子应用在不编写钩子、乃至于不做任何改造下正常运行
  3. 基于web component,支持组件化
  4. 保留子应用的ssr效果
  5. 接收html/js两种入口 其中第1.2条必须做到,第3.4.5条尽力而为,

merak就是按照这个目标前进的:

  1. 完全放弃标签劫持,利用编译端实现改造
  2. 支持iframe模式
  3. 通过proxy,确保子应用的所有部分均在web component中(2.3和无界一致)
  4. 支持ssr模式
  5. 支持库模式

Released the MIT License.