请教各位,前端怎么解决项目不同版本代码复用的问题?

2023-09-19 10:31:22 +08:00
 xfq2

我开发了项目 A ,一开始是为区域 A 服务的,后来变成标准化产品,也要给别的区域部署开发,但区域都有自己的个性化需求,所以我尝试过下面的解决方案:

  1. 在项目 A 新建一个针对区域 B 的分支,在上面维护开发区域 B 的需求,但这样在后期有很多区域的时候,很难维护。举例,有些 bug 在这个分支修复了,别的分支还存在;突然上面说要改版首页或功能,要求所有区域升级,这 NM 的

  2. 主仓库为基础库 fork 出子仓库的模式开发,只能复用部分功能,而且很麻烦,各种合并或 cherry pick

各位进来的大佬,有什么好的解决方案吗,主要是想维护方便。感谢分享指教

3757 次点击
所在节点    前端开发
56 条回复
liberty1900
2023-09-19 11:53:19 +08:00
Monorepo: npm workspace
ayase252
2023-09-19 12:00:26 +08:00
@xfq2 加开关来配置各项功能呢?
goldenAndGreen
2023-09-19 12:21:11 +08:00
@xfq b 区域抽出来,参数里添加 config 对象。根据 config 字段选择执行的逻辑。其他项目调用的时候传 config 呗
不过就怕项目单测太少,重构这边导致其他 bug ,单测要全覆盖就还好,否则费力不讨好...
xfq2
2023-09-19 12:38:39 +08:00
@ayase252 是 isB 这种开关吗 会增加好多判断 而且区域多了就混乱了
xfq2
2023-09-19 12:39:39 +08:00
@goldenAndGreen 参数添加 config 对象能展开说说吗
xfq2
2023-09-19 12:47:10 +08:00
@tomieric @6379616e @wpzz @liberty1900 研究下感谢分享
LOWINC
2023-09-19 13:20:55 +08:00
以前也搞过这种 接了二三十和客户 ,实践下来还是一个仓库一个分支好维护.
定制功能就直接 isA isB 区分
SoloCompany
2023-09-19 13:26:29 +08:00
复杂度高的内容提升为公共模块,复杂度低的弱智类个性化,转化为 monkey script
treblex
2023-09-19 13:27:32 +08:00
试了一下 npm link ,上了 vue3 把 api 和 hooks ,以及一些工具类拆出来了
murmur
2023-09-19 13:51:19 +08:00
复制粘贴

一开始就不造轮子,剩下的就是业务代码了,业务代码怎么服用,直接粘贴啊
xuhai951753
2023-09-19 14:19:35 +08:00
不要多发布分支,很乱
设计模式:工厂模式、策略模式、适配器模式。你可以看哪个合适。
举个小例子,
adonislsh
2023-09-19 14:36:36 +08:00
上面说的这些根本不是 ToB 行业内的解决方案, 正确的解法是通过 rpa 扩展来实现不同企业的不同需求
vueli
2023-09-19 14:40:17 +08:00
git 的 submodule
wtf12138
2023-09-19 14:59:54 +08:00
我也想问,目前还没有找到切实可行的方法
liminany1
2023-09-19 15:28:52 +08:00
你需要项目产品化方面知识,有两个维度,一个是需求,一个是技术,需求方面得按产品化思路定义产品需求,哪些是产品核心需求,哪些是定制化需求,需要边界,这个产品化的过程是一个过程,涉及到需求的上升和下沉,技术架构的重构。实际上大部分情况实施的时候往是从客户定制化的项目需求转换成产品需求,这里需要有产品思维的人把关。

在说回技术层面,涉及到技术架构的重构调整,这个架构是产品化的基础,要有良好的扩展性,特别是对产品需需的额外订制和扩展。从这里又引伸出来代码分支模型,核心产品做为主库,正常开发按迭代推进,识别核心需求和定制需求,可以按客户创建定制化分支,优先开发核心需求,引入特性分支,按特性分支模式开发新需求,特性需求和定制需求通过 pr 合并到主分支或者是客户的定制分支。。。。反正挺复杂的
LandCruiser
2023-09-19 15:36:40 +08:00
无解的事,越封装越拆分开发成本越高,能抽组件抽组件,不能抽组件就复制粘贴。无解~
lk920724
2023-09-19 15:42:56 +08:00
定制化开发,不抽离。
xfq2
2023-09-19 15:43:47 +08:00
@LOWINC 你这 20 、30 个版本这么维护太猛了 有针对很多 isA, isB 做什么优化吗
xfq2
2023-09-19 15:49:18 +08:00
@SoloCompany monkey script 是什么手段,能展开讲讲不
LOWINC
2023-09-19 16:08:59 +08:00
很多业务就不会再第二个客户上出现. 这种也只能 isA,isB
建个 partner 文件夹 专门写这种 isA,isB 的代码, 项目主体并不会很乱
其它就参考 @xuhai951753 ,不要搞复杂了

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

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

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

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

© 2021 V2EX