# 目录结构

框架目录约定规范如下:

.
├── app
├   ├── app.js                # 应用实际入口文件
├   ├── cluster.app.js        # 应用实际入口文件(cluster 模式的时候)
├   ├── controllers           # Controller 文件存放目录
├   ├── extends               # Koa 4 个内置对象扩展存放目录
│   │   ├── application.js    # Koa Application 对象扩展(可选)
│   │   ├── context.js        # Koa Context 对象扩展(可选)
│   │   ├── request.js        # Koa Request 对象扩展(可选)
│   │   └── response.js       # Koa Response 对象扩展(可选)
├   ├── middlewares           # 中间件存放目录
├   ├── routers               # 路由文件存放目录
│   │   ├── default.js
├   ├── services              # Service 文件存放目录
├   └── views                 # HTML 模板文件存放目录
├── app.yaml                  # 指定使用的 Node 版本及入口文件(Docker 部署需要用到)
├── bin
├   ├── start.js              # 约定应用启动文件(虚拟机部署需要用到)
├── client                    # 前端源码文件存放目录
├── config
│   ├── config.daily.js       # Daily 环境配置文件(可选)
│   ├── config.default.js     # 默认配置文件
│   ├── config.development.js # 本地开发环境配置(可选)
│   ├── config.perf.js        # 性能压测环境配置文件(可选)
│   ├── config.pre.js         # 预发环境配置文件(可选)
│   ├── config.prod.js        # 生产环境配置文件(可选)
│   ├── config.qa.js          # QA 环境配置文件(可选)
│   ├── middleware.default.js # 默认中间件配置文件
│   └── plugin.default.js     # 默认插件配置文件
├── package-lock.json
├── package.json
├── plugins                   # 插件存放目录
├── run                       # 运行时输出的一些配置信息
│   ├── config.json           # 应用启动后的配置对象
│   ├── controllers.json
│   ├── dirs.json             # 应用启动后遍历的目录列表
│   ├── libs.json             # 应用启动后对外暴露的 Lib 函数库列表
│   ├── middlewares.json      # 应用启动后中间件配置对象
│   ├── routers.json          # 注册的所有路由
│   └── services.json         # 应用启动后对外暴露的所有服务列表
└── static                    # 前端编译后代码存放目录
文件 应用 框架 插件
app/controllers ️✔
app/extends
app/lib
app/middlewares
app/routers
app/services
app/views
config/config.default.js config/config.${env}.js
config/plugin.default.js config/plugin.${env}.js
config.middleware.default.js config.middleware.${env}.js