## 前言
已经很久没有更新,虽然该系列才有一个用户付费购买查看,但是还是想说声对不起。花了钱只为了这几篇文章,而且前面几篇还都是免费的。在时间充裕的情况下,这个系列会持续更新。至少可以从这上面汲取到一些认识。关于新的后台开发篇章,是在之前基于版本 5.1 开发的后台 [catchAdmin]([https://gitee.com/lovephp/thinkphp51\_backstage](https://gitee.com/lovephp/thinkphp51_backstage)) 上,使用版本 6.0 重新开发,并且向 `Composer` 式开发靠拢,更加插拔式。算是一种探索。
## 关于新版本的看法
新版本较于 5.1 在核心上改变很大,在去年使用 5.1 版本的构建了一个浅显的后台管理我,没有深度去使用 5.1,所以没法深度去讲这两个版本的差异性。但是少看出官方很用心,将很多核心的功能抽离成组件,想必这花费了很多时间和精力。我能做这种插拔式开发,也得益这样的架构,我可以很好的剥离每个模块。当然目前在开发中涉及的业务并不复杂,依赖很少。但是利用 ` composer` 模式开发的话,依赖也是可以解决的。
## 谈谈正在尝试的后台开发
后台模版是基于 `Ant Design Vue` 开发。所以涉及到的后台业务开发都不是在 `app` 目录下开发的,因为我开源使用 `catchAdmin`,所以全部在 `catch` 目录下,一些扩展类会放在 `extend` 目录下。该项目不会破坏官方项目结构,减少使用者的心智负担。我看到很多第三方的项目结构,破坏了原有项目结构,增加了复杂度。我量将后台业务内聚在 `catch` 目录下,特别之处也会提醒,在二次开发和改造的时候能迅速定位。
## 约定大于配置
这是从 `Ruby` 学来的。这真的很重要。如果一个项目没有约定好的东西,后期真的会很混乱,管理起来特么麻烦。社区 `psr` 规范就是很好的约定表现。如果开发这个后台开发有几个约定。当你开发一个新的模块时,必须有以下几个文件目录
```
- route.php // 这是路由文件
- module.json // 这是模块描述文件
```
主要试看看 `module.json` 文件, 以首页模块为例
```
{
"name": "首页管理", // 描述 可能用户菜单
"alias": "index", // 别名 用于模版加载的 用户自己的设置 千万不要其他模块同名
"description": "", // 模块描述
"keywords": [],
"order": 0,
"services": [], // 模块的 service,非必填
"aliases": {},
"files": [], // 预留
"requires": [], // 处理依赖,预留,可能以后需要开发在线更新的话使用
"enable": true //是否开启模块
```
目前必须约定就是这两个文件,如果以后有其他约定会继续添加。