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 接口。