各位前端大佬,老项目的重构,涉及到多个子系统,该如何选型? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
midopen
V2EX    前端开发

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

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

    主要需求是,目前有多个子系统( 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     Solana     1183 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 17:33 PVG 01:33 LAX 09:33 JFK 12:33
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86