按语言(PHP/iOS/ 小程序)大一统放所有项目,反而是新手后期一定会翻车的结构。
1、当前的方案
/PHP/ 放所有PHP项目
/iOS/ 放所有iOS项目
/android/ 放所有Android项目
/wechat/ 放所有小程序项目
这是现在的方案,按语言(PHP/iOS/Android/小程序)大一统放所有项目,当只负责一端或者项目只有一端时,问题不大。但是现在发现一个人同时负责多端的时候,这种方式就有些问题,管理比较麻烦。
2、行业主流标准结构:根目录按【业务/项目】分
推荐全局根目录结构(通用万能)
~/WorkSpace/ # 所有开发工作总根目录
├─ Personal/ # 个人私活/自己练手项目
├─ Company/ # 公司在职项目
├─ OpenSource/ # 开源、克隆的第三方项目
├─ Temp/ # 临时测试、demo、临时练手代码
└─ Archive/ # 已完结、归档不再维护的老项目
单个项目内部结构(大项目文件夹里再拆分模块/语言)
拿商城项目举例:
~/WorkSpace/Company/Mall-Shop/
├─ mall-api-php/ # PHP后端接口
├─ mall-app-ios/ # iOS App
├─ mall-wechat-mini/ # 微信小程序
├─ mall-admin-vue/ # 后台管理前端
├─ mall-doc/ # 项目文档、接口文档、需求说明
├─ mall-assets/ # 共用静态资源、设计图、图标
└─ README.md # 整个项目统一说明、启动方式、环境配置
优点:同一个项目所有端、所有与有全在一个项目根文件夹里,一目了然。
3、git管理方案
目前有两种git管理方案可选择:
Monorepo(单仓多模块):一个业务根目录 = 一个 Git 仓库,内部的各个语言/模块 都放在同一个Git仓库里一起管理。
物理按项目聚合 + Git 分仓:目录结构如下
WorkSpace/Company/mall-shop/
├─ mall-api-php/ # 独立 Git 仓库
├─ mall-app-ios/ # 独立 Git 仓库
├─ mall-wechat-mini/ # 独立 Git 仓库
└─ mall-admin-vue/ # 独立 Git 仓库
两种方式优缺点,单仓多模块使用最方便,缺点是多人协作时代码容易泄露,存在代码安全权限问题。项目聚合+Git分仓可以在一定程度上避免代码安全问题,但是使用稍稍麻烦一点。
4、最终选择方案
由于很长时间以内都不会存在多人协作开发的问题,也就是不存在代码安全的问题,所以果断采取单仓多模块的模式。
4.1、根目录结构
~/projects/ # 所有开发工作总根目录
├─ personal/ # 个人私活/自己练手项目
├─ company/ # 公司在职项目
├─ openSource/ # 开源、克隆的第三方项目
├─ temp/ # 临时测试、demo、临时练手代码
└─ archive/ # 已完结、归档不再维护的老项目
4.2、项目文件夹命名
项目文件夹采用驼峰式命名方法
4.3、子文件夹命名规范
- -web pc端、管理后台、接口多合一
- -ios iOS客户端
- -android 安卓客户端
- -xcx 微信小程序
- -docs 文档
或者第一个多合一的再区分下
- -api API接口
- -admin 管理后台
- -web pc端