Skip to content

规范

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 层,减少这两个复杂度。

所以对于模块,可以根据你实际需求引入不同分层模式。以适应业务带来的复杂度