主题
规范
CatchAdmin 是一款前后端分离框架,并且功能模块化了。所以这需要一定的规范来维护这一套代码。不管是企业和个人使用这套代码,个人认为在维护性和代码规范上都超过了市面上大部分商业产品。本产品所有规范都不是基于个人习惯,而是基于社区一套规范,是具有普适性的。
代码规范
PHP 代码
PHP 代码是基于社区 PSR12
规范严格执行。在 Laravel 中使用 Laravel Pint
格式化插件来制定该规范,你可以在项目根目录找到 pint.json
文件,内容如下
json
{
"preset": "psr12",
"rules": {
"braces": false
},
"exclude": ["database"],
"notName": ["server.php"]
}
如果你使用 PHPStorm,请设置好对应的格式化配置,save on(保存文件)的时候自动格式化。需要一次性的话,可以使用下面的命令
shell
composer pint
这会格式化项目的所有文件。
前端代码规范
前端代码目前使用 Vue3+ts,前端项目放在 web
单独的目录。格式化代码使用 Prettier
,这个在 vscode 中可以下载插件。找到 web 目录下的 .prettierrc
文件,内容如下
json
{
"semi": false,
"printWidth": 200,
"tabWidth": 2,
"useTabs": false,
"singleQuote": true,
"arrowParens": "avoid",
"trailingComma": "none",
"bracketSpacing": true
}
项目开发规范
现在项目采用模块化开发,将一个一个功能模块都拆成独立的小模块。所以对模块目录组织有一定的规范和要求,下面以权限模块为例。找到 modules/Permissions
目录
├─permissions
│ ├─database (migration和seed文件目录)
| ├─Exceptions(模块异常)
| ├─Middlewares(模块中间件)
| ├─Providers(模块服务)
| ├─routes(模块路由)
│ └─HTTP (业务目录)
| | ├─Controllers (控制器)
| | ├─Requests (FormRequest 一般用户表单验证)
│ └─Models (模型目录)
├─Installer.php (模块安装器)
这里并没有采用大型模块开发方式,像社区一直说的 Controller-->Service-->Repository-->Model
模型,为什么不了?
因为这里已经将模块拆分,这属于比较小的单元了。例如对于权限模块,所有业务代码拆分到 Controller
Model
FormRequest
之后,再利用 trait
特性,分开处理之后。控制器和模型并没有变得肥大。在我个人看来就没有必要拆分了。拆分反而使得代码啰嗦难维护,因为调用栈太深。
但是到了商城后台的管理模块,我引入 Service 层来处理商品数据,因为处理逻辑太多,又不可拆分。不管是在控制器还是模型处理,都会造成其中一方肥大。所以这里将一些业务逻辑拆到 Service 层,减少这两个复杂度。
所以对于模块,可以根据你实际需求引入不同分层模式。以适应业务带来的复杂度