2019-04-10 | koa2 | UNLOCK

koa2实战之项目结构规范

koa-generator

使用koa-generator模块来快速构建项目目录结构

  • 安装: $ npm install -g koa-generator
  • 创建:koa2 appname

分析已生成的结构目录

1
2
3
4
5
6
├─ bin/                     //项目启动文件          
├─ node_modules/ //项目依赖模块
├─ public/ //静态资源
├─ routes/ //路由
├─ views/ //模板引擎
└─ app.js //用于自定义启动时的初始化工作,比如调用中间件,启动路由等
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{
"name": "test",
"version": "0.1.0",
"private": true,
"scripts": {
"start": "node bin/www",
"dev": "./node_modules/.bin/nodemon bin/www",
"prd": "pm2 start bin/www",
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"debug": "^2.6.3",
"koa": "^2.2.0",
"koa-bodyparser": "^3.2.0",
"koa-convert": "^1.2.0",
"koa-json": "^2.0.2",
"koa-logger": "^2.0.1",
"koa-onerror": "^1.2.1",
"koa-router": "^7.1.1",
"koa-static": "^3.0.0",
"koa-views": "^5.2.1",
"pug": "^2.0.0-rc.1"
},
"devDependencies": {
"nodemon": "^1.8.1"

}
}

熟悉用到的各种中间件

1. koa-logger

Development style logger middleware for koa:https://www.npmjs.com/package/koa-logger

2. koa-views

Template rendering middleware for koa@2:https://www.npmjs.com/package/koa-views

3. koa-json

JSON pretty-printed response middleware. Also converts node object streams to binary:https://www.npmjs.com/package/koa-json

4. koa-onerror

an error handler for koa, hack ctx.onerror.https://www.npmjs.com/package/koa-onerror

5. koa-bodyparser

A body parser for koa, base on co-body. support json, form and text type body.https://www.npmjs.com/package/koa-bodyparser

6. koa-static

Koa static file serving middleware, wrapper for koa-send.https://www.npmjs.com/package/koa-static

7. koa-router

Router middleware for koa:https://www.npmjs.com/package/koa-router

感谢分享https://mobilesite.github.io/2017/04/29/develop-backend-service-with-koa2/

能够继续分层的结构

  • 分离controller层:提取业务逻辑代码
  • 分离service层:用于处理数据层面的交互,比如调用model处理数据库,调用第三方接口等,而controller里面只做一些简单的参数处理
  • 分离dao层:使用monogoose模块操作Monogodb则细分为schema与model
  • 提取并迁移中间件:定义middleware目录,提取中间件并把app.js的中间件代码迁移到middleware/index.js中,方面后期维护扩展

评论加载中