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

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

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

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

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

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

3758 次点击
所在节点    前端开发
56 条回复
babyoung
2023-09-19 10:38:00 +08:00
把公共的部分抽出来啊
7inFen
2023-09-19 10:44:10 +08:00
创建自用的组件库/模板库
xfq2
2023-09-19 10:45:35 +08:00
@babyoung 怎么抽,展开讲讲
DesnLee
2023-09-19 10:46:58 +08:00
把你公共部分封装成组件复用
lDqe4OE6iOEUQNM7
2023-09-19 10:47:06 +08:00
@xfq2 高耦合,低内聚
codingguy
2023-09-19 10:52:42 +08:00
通用模块发布到 npm 仓库,用到的地方安装一下
xfq2
2023-09-19 11:01:37 +08:00
@DesnLee 公共部分太多了,个性化都是局部的修改
dudubaba
2023-09-19 11:01:52 +08:00
无解,不管是组件还是分支,只要定制化就是坑,纯人力维护。
xfq2
2023-09-19 11:03:34 +08:00
@codingguy 很难以组件的形式复用
Niphor
2023-09-19 11:07:36 +08:00
专门弄个人 对提交的代码审查了入库
MRG0
2023-09-19 11:14:45 +08:00
复制粘贴吧,个性化内容越多组件越难写
xfq2
2023-09-19 11:28:20 +08:00
@MRG0 这就是目前的方法 难受啊
hervey0424
2023-09-19 11:29:49 +08:00
复制粘贴其实是最快的, 考虑的越多麻烦越多, 需求有变化改起来考虑的就越多
tomieric
2023-09-19 11:30:38 +08:00
submodule
ayase252
2023-09-19 11:32:41 +08:00
你都能辨别出来哪些是公共部分,为啥抽不出来?
kucy
2023-09-19 11:39:14 +08:00
无解。只能很多个 if-else 。但代码会臃肿,判断也复杂。
xfq2
2023-09-19 11:39:16 +08:00
@ayase252 举例,区域 B 相对于项目 A 增加了一个霸屏功能,功能较复杂开发时需要修动很多公共部分代码,而这在区域 A 是不需要的
6379616e
2023-09-19 11:40:28 +08:00
无非就是一些常见的手段:组件化开发、参数配置化、版本和分支管理、代码动态加载分割、高度可配置的模块等等。

具体一点的话就是基于上面的一些思想去做的事情,比如:
1.使用组件库去维护一些常见的 UI 模块;
2.模块化开发,将项目去拆分多个模块,每个模块去负责实现一个功能,尽量单一职责,最终目的是更好地管理和复用代码;
3.可以结合一些配置文件,把一些可变的配置项抽离出去,放在单独的配置文件中,可以包括一些主题样式,api ,功能开关等等,针对不同的版本项目去创建不同的配置文件
4.还有就是一些条件编译、模块动态加载,异步组件等等。
wpzz
2023-09-19 11:41:07 +08:00
用一个 npm 包,包里面拆分出来各个区域路径,

xxxpkg/区域 A/组件 A
xxxpkg/区域 B/组件 A
组件 A 在 xxxpkg 中可以维护公共部分,在各区域路径下,实现自定义部分。

有 bug 修复了更新版本,其他项目更新一下包版本即可。
codeself
2023-09-19 11:41:25 +08:00
考虑下 git 子仓库?公用的丢子仓库里

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

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

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

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

© 2021 V2EX