什么是Koa?
Koa 是一個新的 web 框架,由 Express 幕后的原班人馬打造, 致力于成為 web 應用和 API 開發領域中的一個更小、更富有表現力、更健壯的基石。 通過利用 async 函數,Koa 幫你丟棄回調函數,并有力地增強錯誤處理。 Koa 并沒有捆綁任何中間件, 而是提供了一套優雅的方法,幫助您快速而愉快地編寫服務端應用程序。
Koa vs Express
Koa使用promises和async函數來擺脫回調地獄的應用并簡化錯誤處理。它暴露自己ctx.request和ctx.response對象而不是節點req和res對象。另一方面,Express 使用其他屬性和方法擴充節點req和res對象,并包括許多其他“框架”功能,例如路由和模板,Koa沒有。
因此,如果你希望更接近node.js和傳統的node.js樣式編碼,你可能希望堅持使用Connect / Express或類似的框架。如果你想擺脫回調,請使用Koa。
總結
Koa是一個比Express更精簡,使用node新特性的中間件框架,相比之前express就是一個龐大的框架
如果你有興趣了解更多不同,請訪問Koa vs Express
Koa 項目搭建
注意,本篇教程面向有一定Koa使用經驗的用戶。如果,你還不了解Koa,請先看下面的文檔Koa 中文文檔
Koa 文檔過于精簡,雖然將每一個API都進行解釋說明,但還是很難將其組織起來進行應用,對于初學者來說可謂是很不友好。
筆者第一個Koa項目,將所有接口,邏輯,配置等全部寫在了app.js中,雖說完美運行,但是可讀性,可維護性極差,所以一個好的目錄結構尤為重要
目錄創建
依賴安裝
創建好項目目錄后我們需要安裝一些依賴,來供我們使用
可以根據自己的需求進行選擇,但是一些依賴是必須安裝的
后面的內容會講解每個插件有什么用,如何去用。
目錄詳解
config
config是我們的配置文件,比如:
實際運用:
database.config.js
export default { database: '', username: '', password: '', dialect: '', host: '', port: 3306}
具體配置之后會跟大家仔細講解。
models
models文件夾主要是我們的數據庫模型(ORM),存儲數據庫映射文件,eg:
index.js
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
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
service作為服務層主要做相信的業務邏輯處理,數據處理等,將結果返回給controller層
舉例:
const db = require('../models/')const findAllUser = async () => { const result = await db.user.findAll() return result}module.exports = { findAllUser}
以下序號代表代碼行號:
routers
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
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 接口。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。
新聞熱點
疑難解答