外观
在这个项目的官方文档(https://doc.cms.talelin.com/server/)里有对目录结构的说明,如下所示:
app
├── api # api 层
│ ├── cms # 关于 cms 的 api
│ │ ├── admin.js
│ │ ├── log.js
│ │ ├── test.js
│ │ └── user.js
│ └── v1 # 普通api
│ └── book.js
├── config # 配置文件目录
│ ├── code-message.js # 返回成功码错误码和返回信息配置
│ ├── log.js # 日志配置文件
│ ├── secure.js # 安全性配置文件
│ └── setting.js # 普通配置文件
├── dao # 数据库操作
│ ├── admin.js
│ ├── book.js
│ ├── log.js
│ └── user.js
├── extension # 扩展目录
├── lib # 其它类库
│ ├── db.js # Sequelize 实例
│ ├── exception.js # 异常类库
│ ├── type.js # 枚举
│ └── util.js # 助手函数
├── middleware # 中间件目录
│ ├── jwt.js
│ └── logger.js
├── model # 模型层
│ ├── book.js
│ ├── file.js
│ ├── group-permission.js
│ ├── group.js
│ ├── log.js
│ ├── permission.js
│ ├── user-group.js
│ └── user.js
├── plugin # 插件目录
├── validator # 校验层
│ ├── admin.js # 校验器模块
│ ├── book.js
│ ├── common.js
│ ├── log.js
│ └── user.js
├── app.js # 创建koa实例及应用扩展
└── starter.js # 程序的启动文件这里我们逐个目录进行举例说明。
api目录主要是定义了一些api接口,其中linPost、linGet、linPut、linDelete等方法是官方对原有的post、get、put、delete等方法做的二次封装,集成了权限和日志功能。比如,adminRequired就表示需要是超级管理员才有权限访问这个接口,loginRequired表示已登录的用户才有权限访问这个接口。 
这个目录下都是一些配置文件,会影响到安全的配置都放到secure.js文件中,日志相关的配置都放到log.js文件中,接口响应code枚举值配置信息都放到code-message中,其他配置信息都放到setting.js文件中。当然这些是默认的配置文件,如果你有大块的关于某个方面的配置信息,完全可以拎出来单独建立一个文件。 
dao层,即data object access,是操作数据库的地方。 
extension目录下是一些最现有功能的拓展。如下图,对文件上传功能进行了拓展。 
自定义插件。