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

2023-07-07 15:59:25 +08:00
 midopen

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

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

比较纠结的点是:

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

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

感激不尽~~~

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

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

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

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


至于你纠结的点:
1:monorepo 用不用不是大问题,无非是本地开发体验更友好,走单独的 library 再 link 效果差不多。
2:不适合微前端方案,不建议上
3:monorepo 只是一种代码组织方式,和微前端没关系。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/954901

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX