0.1.1 • Published 5 years ago

koa-quick-start v0.1.1

Weekly downloads
4
License
MIT
Repository
github
Last release
5 years ago

这是一个快速构建 Koa 项目的模板,基于过往的工作经历整理,如若需要 Koa-Session、ORM 等需要自己引入。

NPM 命令

启动服务

npm start

代码检查

npm run lint

运行测试

npm run test

查看测试覆盖率

npm run cov

模板说明

plugin

插件存储的目录,目前只有一个 log.js,用于打印项目日志。

config

配置文件集合,可根据 NODE_ENV 加载不同的配置,默认加载 config.default.js 的配置,可被覆盖。

common

  • error_code.js: 错误码配置文件
  • error_msg.js: 错误信息配置文件
  • log_type.js: 日志类型配置文件
  • status_code.js: 状态码配置文件
  • sys_error.js: 自定义系统错误,增加了 code 及 status 字段

schema

用于存储参数规则

middleware

中间件目录,包括以下中间件:

  • check_param.js: 校验参数是否合法(基于 Joi 实现)
  • request_time.js: 记录请求响应时间,会调用插件-Log

router

配置 URL 路由规则,目前 URL 路由支持 5 个参数:

  • method: 方法
  • path: URL 路径
  • checkParam: 参数校验(可选),会使用 schema 中提前写入的规则
  • middleware: 在 controller 前做的其它操作,比如权限校验、预置上下文等
  • controller: 配置路由规则后跳转的 controller
{
  method: 'get',
  path: '/users/:userId',
  controller: TestCtrl.getUser,
  checkParam: TestSchema.getUser,
  middleware: [],
}

controller

controller 负责的是:解析用户的输入,处理后返回相应的结果。通过 Router 将用户的请求基于 method 和 URL 分发到对应的 Controller。

service

引入 service 是为了让 controller 层更加轻量,这样 controller 中的逻辑会更加简洁,代码的复用性也能够更强。

model

这个我也很难用语言来描述,在实际的开发中,如果只有 controller 及 service,会让代码比较臃肿,而且分层不够清晰。所以加了 model 层,用于访问数据库、访问缓存、访问第三方等,个人理解像一个领域模型或是一个防腐层。

test

测试用例——不经过测试的代码发布后怎么能安心

File% Stmts% Branch% Funcs% LinesUncovered Line #s
All files100100100100
controller100100100100
permission.js100100100100
test.js100100100100
model100100100100
user.js100100100100
router100100100100
index.js100100100100
test.js100100100100
schema100100100100
test.js100100100100
service100100100100
user.js100100100100

其它说明

  • app.js: 入口启动文件
  • .eslintignore: eslint 规则忽略文件
  • .eslintrc: eslint 规则
  • .huskyrc: husky 配置
  • commitlint.config.js: 结合 husky 使用
  • .nycrc: nyc 配置
  • .prettierrc: prettier 配置
  • .gitignore: git 忽略文件
  • .npmignore: npm 忽略文件

部分依赖说明

  • @hapi/joi:参数校验工具
  • husky:Git hooks 工具