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

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

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

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

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

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

3758 次点击
所在节点    前端开发
56 条回复
codingguy
2023-09-19 16:11:40 +08:00
@xfq2 #9 不一定必须是组件的形式,可以就一坨代码都发上去,暴露接口
xuhai951753
2023-09-19 16:14:08 +08:00
@adonislsh 什么是 rpa 啊
lsl233
2023-09-19 16:14:58 +08:00
必须要和产品,UI ,一起设计,定制规范才可行,不然开发一个人去做,是很难适应产品 UI 的需求变化
codingguy
2023-09-19 16:20:29 +08:00
@xfq2 #9 或者看看这个 https://bit.dev/
Simonzzz
2023-09-19 16:22:49 +08:00
pnpm workspace + monorepo
SHOOT
2023-09-19 16:23:26 +08:00
怎么方便怎么做。 后面干不下去就跑路👀
tkHello
2023-09-19 16:25:58 +08:00
复制 跟 java 一个思路就行
robinlovemaggie
2023-09-19 17:02:19 +08:00
静态页面 client side render ,动态页面就 server side render,然后分库维护?
googleaccount
2023-09-19 17:10:33 +08:00
通过配置来处理吧 一个页面 可能就一两个字段的区别
myon
2023-09-19 17:10:38 +08:00
我也推荐 isA 、isB 的做法,多分支维护非常痛苦。然后最好说服给你需求的人,让他少提差异化需求
Jamy
2023-09-19 17:13:40 +08:00
功能做成插件化模式. 提供各种通用接口到插件里, 需要定制的功能,就引入一个独立插件专门处理.
TinyKube
2023-09-19 17:47:15 +08:00
环境变量是最佳实践,18 年政务云原生的实践经验,其实就类似 C 的宏定义编译那套
aikilan
2023-09-19 17:55:10 +08:00
公司也有类似的场景,一开始就担心一些定制化的需求会修改标准化模块,所以从标准化的 fork 了一个项目出来,在跌跌撞撞的维护了半年左右以后,再想从标准化通过 git 同步代码已经变得举步维艰,因为上游的产品经理和下游的产品经理对于“标准”的定义起了分歧。

目前唯一还完全通用的模块,都是在业务代码之外的,比如组件库之类的。时间久了,最开始没抽出来的东西,都会发生变化的,自己考量吧。
yufeng0681
2023-09-19 22:39:58 +08:00
1 、前后端分离,前端按区域定制开发,代码级复用;后端一个版本打天下,定制业务提供定制接口,调用公共接口
2 、需求管控,尽量将同类功能统一,不定制;
adonislsh
2023-09-21 18:31:42 +08:00
@xuhai951753 就是在你标准的产品上面加一些扩展接口, 不同企业, 不同需求, 可以通过这些扩展来处理自己的业务逻辑. 要不然 salesforce 这样的公司,不可能为每个不同需求的客户去定制 crm 系统吧, 一些厉害的做 rpa 的都专门成立公司了,比如 Automation Anywher,不过你这个就写一个标准产品, 在很多客户需要扩展的地方你就暴露你的方法, 让后不同的公司就去处理不同的业务需求.
FocusOnResults
2023-10-07 10:39:59 +08:00
B 端产品碰到同样的问题,非业务代码还好可以抽成公用组件库,业务代码如果加各种判断,工作量可能会更大,所以很多时候都是直接复制粘贴。。

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

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

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

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

© 2021 V2EX