yarn global koa-generator
yarn
yarn dev
├─ .babelrc
├─ .env
├─ .gitignore
├─ README.md
├─ app.js
├─ bin
│ ├─ start.js
│ └─ www
├─ config sql/log配置文件
│ ├─ database.js
│ ├─ log.js
│ └─ signale.js
├─ controllers 业务层(接口逻辑)
├─ logList 输出日志目录
├─ middleware koa的中间件
│ ├─ error
│ │ ├─ constants.js 错误码
│ │ ├─ customError.js 自定义错误
│ │ ├─ errorMsg.js 错误mes
│ │ └─ response.js 统一res返回格式
│ ├─ exception.js 异常处理
│ ├─ http-exception 自定义错误格式
│ │ └─ index.js
│ └─ logs 日志配置文件
│ ├─ access.js
│ ├─ index.js
│ └─ logger.js
├─ modules 模块文件
│ ├─ index.js
│ └─ models
├─ package.json
├─ routes 自动注册路由文件
│ └─ index.js
├─ schema ORM
- 测试框架
- 集成swagger
- 网关方案
- 线上热更新
- 线上热部署
- 线上监控
- pm2
- 鉴权
- 异常处理
- 错误日志
- 路由自动注入
- 路径别名
描述 | 接口 | 方法 | url 参数 | 备注 |
---|---|---|---|---|
id | Y | Y | Y |
- 插件:
- koa-seesion
- 插件:require-directory
import requireDirectory from 'require-directory';
import Router from 'koa-router';
class InitManager {
static initCore(app) {
//把app.js中的koa实例传进来
InitManager.app = app;
InitManager.initLoadRouters();
}
//全局注册路由
static initLoadRouters() {
const apiDirectory = `../controllers` //目录
requireDirectory(module, apiDirectory, {
visit: whenLoadModule
});
function whenLoadModule(obj) {
if (obj instanceof Router) {
InitManager.app.use(obj.routes(), obj.allowedMethods())
}
}
}
}
module.exports = InitManager;
- 插件:log4js
- 日志配置文件:
- config/log.js
- 日志使用
- 1.根据设置的env文件打出日志
- 1.1 env为dev/local/development控制台输出日志
- 1.2 其他配置文件输出日志
- 1.3 输出目录自动配置
- 1.根据设置的env文件打出日志
- Schema是一种以文件形式存储的数据库模型骨架
sequelize
- String :字符串类型
- Number :数字类型
- Date : 日期类型
- Boolean: 布尔类型
- Buffer : NodeJS buffer 类型
- ObjectID : 主键,一种特殊而且非常重要的类型
- Mixed :混合类型
- Array :集合类型
import {
CustomError,
HttpError
} from './middleware/error/customError'
import constants from './middleware/error/constants'
router.get('/customError', (ctx, next) => {
throw new CustomError(constants.CUSTOM_CODE.SOME_CUSTOM_ERROR)
})
- nodemon 检测文件变化,自动重启 node
- cross-env 兼容 mac linux 和 windows 的环境变量
- node使用import
require('babel-register')
({
plugins: ['babel-plugin-transform-es2015-modules-commonjs'],
})
module.exports = require('./app.js')// 入口文件
- 采用
koa-parameter
包 - 同理joi也可以,更完美,但是koa-parameter更完美,更符合我的业务需求