快速搭建可用于实战的koa2+mongodb框架

Posted 大前端工程师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速搭建可用于实战的koa2+mongodb框架相关的知识,希望对你有一定的参考价值。

准备工作

mac下安装mongodb可以参考这里:Mac安装Mongdb - chendong_的博客 - CSDN博客

chenyucai/hello-koa2-mongodb github.com

ps:GitHub上面的源码直接链接了我本人的云数据库,可临时提供给小伙伴们调试与使用。


1.使用koa-generator生成koa2项目

1.1 全局安装koa-generator

npm install -g koa-generator

1.2 使用命令生成项目基本目录

koa2 hello-koa2-mongodb
快速搭建可用于实战的koa2+mongodb框架

1.3 创建项目成功之后进入项目目录,进行依赖安装

cd hello-koa2-mongodb && npm install
快速搭建可用于实战的koa2+mongodb框架

1.4 运行命令预览一下

npm start

浏览器打开localhost:3000/

快速搭建可用于实战的koa2+mongodb框架

2.目录结构

因为现在的项目基本上都是前后端分离,所以我这里只编写的框架中并不带模版。然后我们需要改造一下目录结构,详细代码可移步这里

快速搭建可用于实战的koa2+mongodb框架

controller: 控制器层

dbHelper: 链接mongodb

error: 实现统一异常处理

middleware: 各种中间件

model: 实体类

utils: 各种工具类


3.代码实现

koa的项目中引用文件都是采用require,对于习惯了使用import关键字的小伙伴可以这样解决:在项目中引入babel-plugin-add-module-exportsbabel-register

npm install babel-plugin-add-module-exports babel-register --save-dev

并在根目录下创建一个.babelrc的文件

{
  "presets": ["es2015", "stage-3"],
  "plugins": ["add-module-exports"]
}

并在入口文件中require('babel-register')


3.1 入口文件:src/app.js

快速搭建可用于实战的koa2+mongodb框架

3.2 连接mongodb等设置:src/config/index.js

快速搭建可用于实战的koa2+mongodb框架
快速搭建可用于实战的koa2+mongodb框架

3.4 controller控制器

快速搭建可用于实战的koa2+mongodb框架

这里使用了class,习惯写fucntion的小伙伴用function也是一样的


3.5 model实体

快速搭建可用于实战的koa2+mongodb框架

下面这样可以配置mongoose自动更新createTime和updateTime

快速搭建可用于实战的koa2+mongodb框架

4 统一异常处理

如果是写java的小伙伴都知道,统一的异常处理是非常有必要的


ApiErrorNames.js定义异常code码

快速搭建可用于实战的koa2+mongodb框架

ApiError.js实现统一异常处理

快速搭建可用于实战的koa2+mongodb框架
注意:为什么不用class,因为用了babel,class会被编译成es5,导致instanceof没用


5 jwt验证

  1. 使用jsonwebtoken

npm i jsonwebtoken  // 一个实现jwt的包

自己实现一个jwt校验中间件 (也可以直接使用koa-jwt)

在需要校验的接口上加上verify就行了


ps: 细心的小伙伴可能发现了,为什么没有service层啊!! service要的要的,大家自行加上[坏笑]


以上是关于快速搭建可用于实战的koa2+mongodb框架的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js+Koa2移动电商实战-1

Koa2+MongoDB+JWT实战--Restful API最佳实践

iKcamp|基于Koa2搭建Node.js实战(含视频)? 视图Nunjucks

开始连载啦~每周2更共11堂iKcamp课|基于Koa2搭建Node.js实战项目教学(含视频)| 课程大纲介绍

koa2+mongodb搭建后台

Koa2 + Mongodb + Log4js实现日志数据持久化