V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
midopen
V2EX  ›  前端开发

各位前端大佬,老项目的重构,涉及到多个子系统,该如何选型?

  •  
  •   midopen · 2023-07-07 15:59:25 +08:00 · 982 次点击
    这是一个创建于 499 天前的主题,其中的信息可能已经有所发展或是发生改变。

    主要需求是,目前有多个子系统( 1,2,3,4 )

    1. 子系统的组件复用性很高,因此公用组件的提取是必须的;
    2. 子系统的部分数据是共享的,例如用户信息;
    3. 子系统是部署在子域名下的。

    比较纠结的点是:

    1. 如果使用 monorepo 的方式,可以实现数据的同步的吗?在 package 中可以封装通用的方法,然后返回对应的数据,感觉也是一种共享的方式,但是可以实现像微前端一样有个公用的全局数据类似的功能吗?
    2. 如果使用微前端的方式,因为是部署不同的子域名,也就是不存在在主基座中用一个 header ,子基座就可以不用的这种方式了,因为我子基座也是可以独立的启动的,那么这个时候其实微前端也只使用到了类似与上面数据共享的作用,这样感觉是不是又太重了,因为是重构所以也不存在不同的技术栈。
    3. 我还想过在 monorepo 的同时在使用微前端,感觉是不是很奇怪,有木有一种很重的感觉。

    很纠结,有木有踩过坑,或者说有经验的大佬给点意见?

    感激不尽~~~

    3 条回复    2023-07-11 21:04:03 +08:00
    dengshen
        1
    dengshen  
       2023-07-07 18:07:25 +08:00 via iPhone
    monorepo 只是工程代码的组织方式,跟运行时的数据共享没有关系!
    murmur
        2
    murmur  
       2023-07-07 18:11:01 +08:00
    不要想那么多,现在 vue 和 react 都支持按需打包动态加载,公共组件复制粘贴都能解决

    子系统如果不同域名你设计的数据共享全白扯,这是考验设计功底的,所有参数最简化,就传个 id 和查询过滤条件,具体数据让后台解决去
    aqw012
        3
    aqw012  
       2023-07-11 21:04:03 +08:00
    首先公共部分提取要做好,区分什么是公共部分
    --- 与业务无关,比如 UI 库,utils 等等

    其次部分共享数据,因为上了子域名。只需要做好 cookie 共享就行。每个系统自行获取共享数据,获取的能力可以放到公共部分

    最后业务中如果有需要共享的部分,建议走 webpack 的 mudole federation 即可。不需要上什么微前端,场景不合适


    至于你纠结的点:
    1:monorepo 用不用不是大问题,无非是本地开发体验更友好,走单独的 library 再 link 效果差不多。
    2:不适合微前端方案,不建议上
    3:monorepo 只是一种代码组织方式,和微前端没关系。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3015 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 13:21 · PVG 21:21 · LAX 05:21 · JFK 08:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.