微前端架构下的应用拆分与通信机制探索

设计师光纬 框架 阅读 1,827
赞 30 收藏
二维码
手机扫码查看
反馈

谁更灵活?谁更省事?

最近做微前端项目的时候,各种框架和技术方案轮番轰炸,搞得我都有点头晕。主要是Qiankun、Single-SPA、Micro Frontends with Web Components这几个方案,我决定把它们好好对比一下,看看谁更适合实际开发。

微前端架构下的应用拆分与通信机制探索

核心代码就这几行

先来看看Qiankun的注册子应用是怎么写的:

javascript
import { registerMicroApps, start } from 'qiankun';

registerMicroApps([
  {
    name: 'app1',
    entry: '//localhost:8080',
    container: '#container',
    activeRule: '/app1',
  },
]);

start();

再来看Single-SPA的配置:

javascript
import { registerApplication, start } from 'single-spa';

registerApplication({
  name: '@org/app1',
  app: () => import('@org/app1'),
  activeWhen: ["/app1"],
});

start();

Web Components的话,主要就是定义组件和挂载了:

javascript
class MyApp extends HTMLElement {
  connectedCallback() {
    this.innerHTML = <h1>Hello from MyApp!</h1>;
  }
}

customElements.define('my-app', MyApp);

其实差别不大,但是实际使用下来体验还是挺不同的。

谁更灵活?

我个人比较喜欢用Qiankun,主要是因为它支持沙箱模式,可以隔离不同子应用之间的状态。举个例子,如果A子应用里有一个全局变量叫user,B子应用也有一个全局变量叫user,这两个变量不会互相干扰,这个特性特别适合大型项目。Single-SPA在这方面就显得力不从心了,虽然也能隔离,但不如Qiankun那么直观和强大。

谁更省事?

说到省事,我一般选Single-SPA。虽然它在状态隔离上不如Qiankun,但是在配置上更简单,文档也更清晰,新手容易上手。而且Single-SPA支持多种前端框架,Vue、React、Angular都能无缝接入,这对我来说是很大的加分项。

性能对比:差距比我想象的大

性能方面,我觉得Qiankun稍微好一点。它有预加载功能,可以在主应用启动时预加载子应用,这样用户切换到子应用时,体验会更流畅。Single-SPA在这方面就没有那么贴心了,虽然也能动态加载子应用,但是没有预加载的功能,用户体验上会差一点。

我的选型逻辑

我的选型逻辑主要看项目的规模和个人的技术栈。如果是大型项目,涉及到多个子应用的状态管理和数据共享,我会倾向于选择Qiankun。如果是小型项目,或者对新手更友好的项目,我会选择Single-SPA。至于Web Components,我觉得它的优势在于组件复用和性能优化,但是对团队成员的要求比较高,不是特别推荐。

以上是我的对比总结,有不同看法欢迎评论区交流

以上是我踩坑后的总结,希望对你有帮助。如果你有更好的实现方式或者想聊更多关于微前端的话题,欢迎评论区交流。

本文章不代表JZTHEME立场,仅为作者个人观点 / 研究心得 / 经验分享,旨在交流探讨,供读者参考。
发表评论

暂无评论