Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 经过利用 async 函数,Koa 帮你丢弃回调函数,并有力地加强错误处理。 Koa 并无捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。
Koa使用promises和async函数来摆脱回调地狱的应用并简化错误处理。它暴露本身ctx.request和ctx.response对象而不是节点req和res对象。另外一方面,Express 使用其余属性和方法扩充节点req和res对象,并包括许多其余“框架”功能,例如路由和模板,Koa没有。javascript
所以,若是你但愿更接近node.js和传统的node.js样式编码,你可能但愿坚持使用Connect / Express或相似的框架。若是你想摆脱回调,请使用Koa。css
Koa是一个比Express更精简,使用node新特性的中间件框架,相比以前express就是一个庞大的框架java
若是你有兴趣了解更多不一样,请访问Koa vs Expressnode
注意,本篇教程面向有必定Koa使用经验的用户。若是,你还不了解Koa,请先看下面的文档Koa 中文文档mysql
Koa 文档过于精简,虽然将每个API都进行解释说明,但仍是很难将其组织起来进行应用,对于初学者来讲可谓是很不友好。git
笔者第一个Koa项目,将全部接口,逻辑,配置等所有写在了app.js中,虽然说完美运行,可是可读性,可维护性极差,因此一个好的目录结构尤其重要es6
建立好项目目录后咱们须要安装一些依赖,来供咱们使用github
能够根据本身的需求进行选择,可是一些依赖是必须安装的web
后面的内容会讲解每一个插件有什么用,如何去用。redis
config是咱们的配置文件,好比:
实际运用:
confirg
export default { database: '', username: '', password: '', dialect: '', host: '', port: 3306 }
具体配置以后会跟你们仔细讲解。
models文件夹主要是咱们的数据库模型(ORM),存储数据库映射文件,eg:
models
import Sequelize from 'sequelize' import config from '../config/database.config' const sequelize = new Sequelize(config) export const user = sequelize.import(__dirname + '/user') export default { user, sequelize }
如下序号表明代码行号:
controller为控制层,主要处理外部请求。调用service层,将service返回的内容整合后返回给调用方
举例:
const user = require('../service/user') const findAllUser = async (ctx) => { const data = ctx.request.body const result = await user.findAllUser(data) ctx.body = send({data: result}) } module.exports = { findAllUser }
如下序号表明代码行号:
service做为服务层主要作相信的业务逻辑处理,数据处理等,将结果返回给controller层
举例:
const db = require('../models/') const findAllUser = async () => { const result = await db.user.findAll() return result } module.exports = { findAllUser }
如下序号表明代码行号:
router管理咱们的路由,也就是接口地址
举例:
const user = require('../controller/user') const koa_router = require('koa-router'); const router = koa_router(); router.post('/findAll', user.findAllUser) module.exports = router
如下序号表明代码行号:
app.js是咱们的入口文件及主文件,咱们将router里配置的路由在此引入
const koaBody = require('koa-body') Koa = require('koa'), Router = require('koa-router') router = new Router() const user = require('./routers/user'); router.use("/user",user.routes());
这样咱们就能够访问:ip:port/user/findAll 接口。