亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

Koa從零搭建到Api實現項目的搭建方法

2024-05-06 16:53:49
字體:
來源:轉載
供稿:網友

什么是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就是一個龐大的框架

  • 如果你喜歡diy,很潮,可以考慮Koa,它有足夠的擴展和中間件,而且自己寫很簡單
  • 如果你想簡單點,找一個框架啥都有,那么先Express

如果你有興趣了解更多不同,請訪問Koa vs Express

Koa 項目搭建

注意,本篇教程面向有一定Koa使用經驗的用戶。如果,你還不了解Koa,請先看下面的文檔Koa 中文文檔

Koa 文檔過于精簡,雖然將每一個API都進行解釋說明,但還是很難將其組織起來進行應用,對于初學者來說可謂是很不友好。

筆者第一個Koa項目,將所有接口,邏輯,配置等全部寫在了app.js中,雖說完美運行,但是可讀性,可維護性極差,所以一個好的目錄結構尤為重要

目錄創建

  • config - 配置
  • models - 數據庫模型(ROM)
  • controller - 控制器
  • middlewares - 中間件
  • public - 靜態資源
  • service - 服務
  • router - 路由
  • app.js - 啟動文件

依賴安裝

創建好項目目錄后我們需要安裝一些依賴,來供我們使用

  • babel-core/babel-preset-es2015 - 讓 nodeJs 支持 es6 modules
  • koa - koa2
  • koa-body - request body 解析
  • koa-cache-control - 緩存控制
  • koa-compress - gzip
  • koa-cors - 跨域
  • koa-logger - 日志
  • koa-onerror - 錯誤處理
  • koa-router - 路由
  • koa-session - session
  • koa-static - 靜態資源服務
  • koa-helmet - 安全
  • md5 - md5 加密
  • mkdirp - 遞歸創建目錄

可以根據自己的需求進行選擇,但是一些依賴是必須安裝的

  • koa - koa2
  • koa-body - request body 解析
  • koa-router - 路由

后面的內容會講解每個插件有什么用,如何去用。

目錄詳解

config

config是我們的配置文件,比如:

  • 數據庫(mysql,oracle,redis等)
  • OSS
  • ...

實際運用:

  • confirg
    • database.config.js(新建)

database.config.js

export default { database: '', username: '', password: '', dialect: '', host: '', port: 3306}

具體配置之后會跟大家仔細講解。

models

models文件夾主要是我們的數據庫模型(ORM),存儲數據庫映射文件,eg:

  • models
    • index.js - 入口文件
    • user.js - 對應數據庫中的user表

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}

以下序號代表代碼行號:

  1. 引入sequelize,它是一個ORM框架,之后會詳細講解它的使用
  2. 引入我們之前在config中創建的數據庫配置文件呢
  3. 使用sequelize連接數據庫
  4. 將本地數據庫映射文件導出供我們使用

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}

以下序號代表代碼行號:

  1. 獲取請求體
  2. 調用service層
  3. 將service返回的內容返回給調用者(send是自定義的數據格式化方法)

service

service作為服務層主要做相信的業務邏輯處理,數據處理等,將結果返回給controller層

舉例:

const db = require('../models/')const findAllUser = async () => { const result = await db.user.findAll() return result}module.exports = { findAllUser}

以下序號代表代碼行號:

  • 獲取數據庫映射文件,因為要操作數據庫
  • 從數據庫中查尋全部用戶(db.user.findAll()為sequelize中提供的查詢方法)
  • 返回給controller

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

以下序號代表代碼行號:

  1. 引入controller層
  2. 定義接口類型,地址,調用方法(post, '/findAll'',findAllUser)

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武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91最新国产视频| 久久精视频免费在线久久完整在线看| 成人欧美一区二区三区黑人孕妇| 538国产精品一区二区免费视频| 亚洲美女喷白浆| 欧美大奶子在线| 久久久精品中文字幕| 国产精品入口福利| 亚洲欧美中文日韩v在线观看| 精品二区三区线观看| 国产视频久久久久久久| 精品久久久久久久久久ntr影视| 欧美大成色www永久网站婷| 97久久精品人人澡人人爽缅北| 亚洲一区二区三区xxx视频| 91理论片午午论夜理片久久| 国产成人综合精品| 欧美福利在线观看| 欧美国产日韩中文字幕在线| 国产成人精品最新| 亚洲高清av在线| 久久亚洲国产精品| 国产精品视频色| 亚洲一区二区三区久久| 国内伊人久久久久久网站视频| 高清一区二区三区四区五区| 久久精品91久久香蕉加勒比| 91精品国产91久久久久久不卡| 日韩欧美在线视频免费观看| 日韩一区二区三区xxxx| 中日韩午夜理伦电影免费| 欧美日韩亚洲网| 亚洲性视频网址| 欧美一区视频在线| 在线观看91久久久久久| 91视频国产高清| 自拍偷拍亚洲区| 欧美日韩中国免费专区在线看| 欧洲一区二区视频| 一区二区三区回区在观看免费视频| 色偷偷噜噜噜亚洲男人的天堂| 国产精品九九九| 日韩免费高清在线观看| 免费99精品国产自在在线| 亚洲性av网站| 欧美日韩在线免费观看| 国产精品国产三级国产aⅴ浪潮| 这里只有精品在线播放| 国产999精品久久久影片官网| 97视频在线观看网址| 久久精品国产精品亚洲| 国产丝袜一区二区三区| 国产精品亚洲第一区| 亚洲精品视频中文字幕| 欧洲s码亚洲m码精品一区| 亚洲成人久久一区| 国产精品欧美在线| 亚洲黄色片网站| 一区二区中文字幕| 4k岛国日韩精品**专区| 91av在线国产| 91老司机在线| 91国自产精品中文字幕亚洲| 亚洲成人黄色网| 国产欧美中文字幕| 亚洲黄色片网站| 精品露脸国产偷人在视频| 日本久久久久亚洲中字幕| 欧美激情手机在线视频| 国产精品一区二区三区久久| 欧美电影在线免费观看网站| 成人观看高清在线观看免费| 欧美精品少妇videofree| 国内精品国产三级国产在线专| 国产精品日韩一区| 色妞一区二区三区| 97免费中文视频在线观看| 亚洲精品中文字幕女同| 成人精品网站在线观看| 国产欧美亚洲精品| 亚洲tv在线观看| 亚洲人线精品午夜| 国产一区二区三区在线免费观看| 久久久久久久一区二区三区| 欧美精品在线免费| 久久久国产精品一区| 亚洲成人三级在线| 国产成人高清激情视频在线观看| 亚洲福利视频网站| 91视频九色网站| 久久精品视频一| 久久香蕉精品香蕉| 在线日韩第一页| 亚洲欧美在线一区二区| 亚洲视频一区二区三区| 欧美性猛交xxxx免费看久久久| 亚洲成色777777在线观看影院| 91精品久久久久久综合乱菊| 亚洲一区国产精品| 国产精品久久久久久久av电影| 国产综合在线视频| 亚洲最大福利视频网站| 欧美一区二区三区艳史| 亚洲男人第一av网站| 91成人国产在线观看| 亚洲视频在线看| 国产在线视频2019最新视频| 欧美激情一区二区三区久久久| 国产精品夫妻激情| 一区二区三区回区在观看免费视频| 亚洲人成网站在线播| 国产精品成人国产乱一区| 精品毛片三在线观看| 91色在线视频| 亚洲综合成人婷婷小说| 国外成人在线视频| 日韩av电影在线播放| 欧美猛少妇色xxxxx| 欧美尺度大的性做爰视频| 欧美精品videosex牲欧美| 69av在线播放| 最近2019年中文视频免费在线观看| 欧美在线不卡区| 国产精品网红福利| 亚洲国产精久久久久久| 国产女人精品视频| 久久精品国产96久久久香蕉| 久久中文精品视频| 亚洲欧洲一区二区三区在线观看| 亚洲级视频在线观看免费1级| 69av在线播放| 亚洲成人亚洲激情| 全色精品综合影院| 欧美综合国产精品久久丁香| 亚洲日本成人网| 综合av色偷偷网| 亚洲新声在线观看| 久久久精品国产网站| 国产精品99久久久久久www| 91视频国产一区| 国产精品成熟老女人| 色偷偷噜噜噜亚洲男人| 中文字幕精品www乱入免费视频| yw.139尤物在线精品视频| 国产成人精品在线视频| 狠狠躁18三区二区一区| 亚洲一区二区三区香蕉| 欧美日韩成人在线观看| 日本久久久久久久| 国产综合香蕉五月婷在线| 欧美激情久久久久久| 色综合伊人色综合网| 黑人巨大精品欧美一区免费视频| 日韩av成人在线| 岛国视频午夜一区免费在线观看| 国产精品视频网站| 国产精品美女www| 日韩中文字幕在线| 日韩成人黄色av| 亚洲第一区在线| 国产精品女主播| 国产丝袜一区二区三区| 亚洲福利在线视频| 亚洲黄色www网站|