前端微应用

前言

之前几篇文章对微应用乾坤做了一个简单的了解与入门级别学习,因为目前公司使用的微应用技术不是乾坤,暂时也没有太多的时间与精力去做深入的研究,所以只做了一些demo和目前公司中使用的技术做对比。本篇文章会对几个微应用进行了解对比,后面文章会结合公司的项目一点点深入地学习无界,做出一个完整的案例,然后部署到服务器上。

接触微应用

在来这家公司之前,公司都是一些单独部署的项目,vue2 也好,vue3 也好,并没有考虑到向这方面去靠拢,也和公司项目体系有关系吧,学习成本与实际现状也都在那摆着。直到现在才有机会去深入地学习一下,刚入职不久,并不能参与到项目整体框架开发与完善的工作中,目前还是以业务为主,写页面,封装组件之类,不过也好,看他们写的代码再结合文档,应该会有意外收获。

相关概念

有需求就会有市场,一旦项目体量过大,在一个项目中多人参与开发,势必会产生一些问题,比如技术限制,不能再去换新的技术方案,如果想要对项目进行技术升级改造,比如开发了六七年的vue2的老项目重构,就需要对整体开发完成以后才能进行替换,这需要一个很长的周期。我上家公司就是对老项目jsp开发的后台管理系统进行重构,结果把公司也给重构了(倒闭了),当然原因不在这里。

来源

微前端它借鉴了微服务的架构理念,核心在于将一个庞大的前端应用拆分成多个独立灵活的小型应用

关键点在于独立互不影响,当然 ifram 也可以实现微应用。我相信现在工作经验不是特别长的小伙伴只是知道有 ifram 这个东西,但项目中很少会用到。它的弊端也非常多,比如在弹窗里面显示,页面刷新就会丢失状态,无法前进后退等。下面我们来对比一下几个比较常用的微应用。

Single-spa

作为比较早的微前端框架,single-spa 只是实现了加载器、路由托管等功能,毕竟是有些年头,实现方案并不完善,有更好的肯定会优先选择更加成熟的,谁也不想给自己挖坑。

QianKun

QianKun基于 single-spa,对阿里系开源的微前端框架,目前有不少公司在使用这个框架,社区也比较活跃,就是官网太简洁,对新人并不怎么友,上手还是有一点难度的,之前用的时候总是会出现莫名其妙的问题,一卡就是卡好几天(也可能是我太菜)。
QianKunsingle-spa进行了完善
优点:

  1. 子应用资源由 js 列表修改进为一个url,减轻了注册子应用的复杂度
  2. 实现应用隔离,完成js隔离方案 和css隔离方案
  3. 增加资源预加载能力,预先子应用资源缓存下来,加快打开速度

缺点:

  1. 适配成本比较高,生命周期、静态资源、路由等都要做一系列的适配,文档太简洁,上手难度稍微大了一点
  2. 无法同时激活多个子应用,也不支持子应用缓存
  3. vite 支持很不友好

之前就在 vite 上创建 qiankun 项目,耽误了不少时间。虽然也有一些新的方案,但是配置也比较麻烦,所以就中规中矩地按照文档来使用 webpack 。

Mirco-App

Micro App 是京东出的一款基于 Web Component 原生组件进行渲染的微前端框架,不同于目前流行的开源框架,它从组件化的思维实现微前端,旨在降低上手难度、提升工作效率。 优点:

  1. 使用 webcomponet 加载子应用相比 single-spa 这种注册监听方案更加好用
  2. 组件式的 api 更加符合使用习惯,支持子应用缓存
  3. 降低了子应用改造的成本,提供静态资源预加载能力

缺点:

  1. 0.x 虽然支持 vite 运行,但还需要进行改造。目前 1.0 版本已经发布,具体的还没看
  2. 对于不支持 webcompnent 的浏览器没有做降级处理。目前来说系统的使用,都会在一些主流浏览器上,对开发者影响不是很大,当然如果是要求比较严格的系统,那使用时就需要进行考量。

Wujie

无界是腾讯的一款基于 Web Components + iframe 的全新微前端方案,和 Mirco-App 实现原理类似。
优点:

  1. 接入简单,容易上手
  2. vite 支持度很不错,不需要进行什么改造。
  3. 支持子应用缓存,根据项目实际需要可以进行模式选择

缺点:

  1. 子应用axios需要修改适配
  2. 文档比 qiankun 详细一点,但隔三差五就墙了打不开了
  3. 有时候会出现莫名其妙的问题,如运行子应用图片正常显示,从主应用打开,同一个页面同一个静态图片,不同的位置就会导致不显示,感觉很奇怪。最后使用变量引入的方式才正常显示(当然也可能是我写法有问题)不过影响不大

前置知识

webComponents monorepo 一些和微应用有关的知识点,有兴趣的小伙伴去了解一下。关于微应用的了解也是参考了这篇文章。 juejin.cn/post/721260...

个人倾向

之前使用了乾坤写了一个很简单demo,感觉用起来并不是那么顺手。目前公司用的也是无界,感觉比 qiankun 用起来更舒服一点。micro-app的话,等无界微应用项目搞完去做一个demo了解然后再做对比,现在不太好下结论。

最后

上面列了几种比较个人感觉比较常用的微应用方案,也是刚开始对这块进行学习,如果有不对的地方请大佬们指出!

相关推荐
昨天;明天。今天。3 分钟前
案例-任务清单
前端·javascript·css
zqx_71 小时前
随记 前端框架React的初步认识
前端·react.js·前端框架
惜.己2 小时前
javaScript基础(8个案例+代码+效果图)
开发语言·前端·javascript·vscode·css3·html5
什么鬼昵称2 小时前
Pikachu-csrf-CSRF(get)
前端·csrf
长天一色2 小时前
【ECMAScript 从入门到进阶教程】第三部分:高级主题(高级函数与范式,元编程,正则表达式,性能优化)
服务器·开发语言·前端·javascript·性能优化·ecmascript
NiNg_1_2342 小时前
npm、yarn、pnpm之间的区别
前端·npm·node.js
秋殇与星河3 小时前
CSS总结
前端·css
BigYe程普3 小时前
我开发了一个出海全栈SaaS工具,还写了一套全栈开发教程
开发语言·前端·chrome·chatgpt·reactjs·个人开发
余生H3 小时前
前端的全栈混合之路Meteor篇:关于前后端分离及与各框架的对比
前端·javascript·node.js·全栈
程序员-珍3 小时前
使用openapi生成前端请求文件报错 ‘Token “Integer“ does not exist.‘
java·前端·spring boot·后端·restful·个人开发