欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Koa從零搭建到Api實現(xiàn)項目的示例分析

這篇文章給大家分享的是有關(guān)Koa從零搭建到Api實現(xiàn)項目的示例分析的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:空間域名、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、大廠網(wǎng)站維護(hù)、網(wǎng)站推廣。

什么是Koa?

Koa 是一個新的 web 框架,由 Express 幕后的原班人馬打造, 致力于成為 web 應(yīng)用和 API 開發(fā)領(lǐng)域中的一個更小、更富有表現(xiàn)力、更健壯的基石。 通過利用 async 函數(shù),Koa 幫你丟棄回調(diào)函數(shù),并有力地增強(qiáng)錯誤處理。 Koa 并沒有捆綁任何中間件, 而是提供了一套優(yōu)雅的方法,幫助您快速而愉快地編寫服務(wù)端應(yīng)用程序。

Koa vs Express

Koa使用promises和async函數(shù)來擺脫回調(diào)地獄的應(yīng)用并簡化錯誤處理。它暴露自己ctx.request和ctx.response對象而不是節(jié)點req和res對象。另一方面,Express 使用其他屬性和方法擴(kuò)充節(jié)點req和res對象,并包括許多其他“框架”功能,例如路由和模板,Koa沒有。

因此,如果你希望更接近node.js和傳統(tǒng)的node.js樣式編碼,你可能希望堅持使用Connect / Express或類似的框架。如果你想擺脫回調(diào),請使用Koa。

總結(jié)

Koa是一個比Express更精簡,使用node新特性的中間件框架,相比之前express就是一個龐大的框架

  • 如果你喜歡diy,很潮,可以考慮Koa,它有足夠的擴(kuò)展和中間件,而且自己寫很簡單

  • 如果你想簡單點,找一個框架啥都有,那么先Express

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

Koa 項目搭建

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

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

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

目錄創(chuàng)建

  • config - 配置

  • models - 數(shù)據(jù)庫模型(ROM)

  • controller - 控制器

  • middlewares - 中間件

  • public - 靜態(tài)資源

  • service - 服務(wù)

  • router - 路由

  • app.js - 啟動文件

依賴安裝

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

  • 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 - 靜態(tài)資源服務(wù)

  • koa-helmet - 安全

  • md5 - md5 加密

  • mkdirp - 遞歸創(chuàng)建目錄

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

  • koa - koa2

  • koa-body - request body 解析

  • koa-router - 路由

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

目錄詳解

config

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

  • 數(shù)據(jù)庫(MySQL,oracle,redis等)

  • OSS

  • ...

實際運用:

  • confirg

    • database.config.js(新建)

database.config.js

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

具體配置之后會跟大家仔細(xì)講解。

models

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

  • models

    • index.js - 入口文件

    • user.js - 對應(yīng)數(shù)據(jù)庫中的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框架,之后會詳細(xì)講解它的使用

  2. 引入我們之前在config中創(chuàng)建的數(shù)據(jù)庫配置文件呢

  3. 使用sequelize連接數(shù)據(jù)庫

  4. 將本地數(shù)據(jù)庫映射文件導(dǎo)出供我們使用

controller

controller為控制層,主要處理外部請求。調(diào)用service層,將service返回的內(nèi)容整合后返回給調(diào)用方

舉例:

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. 調(diào)用service層

  3. 將service返回的內(nèi)容返回給調(diào)用者(send是自定義的數(shù)據(jù)格式化方法)

service

service作為服務(wù)層主要做相信的業(yè)務(wù)邏輯處理,數(shù)據(jù)處理等,將結(jié)果返回給controller層

舉例:

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

以下序號代表代碼行號:

  • 獲取數(shù)據(jù)庫映射文件,因為要操作數(shù)據(jù)庫

  • 從數(shù)據(jù)庫中查尋全部用戶(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. 定義接口類型,地址,調(diào)用方法(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 接口。

感謝各位的閱讀!關(guān)于“Koa從零搭建到Api實現(xiàn)項目的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

當(dāng)前名稱:Koa從零搭建到Api實現(xiàn)項目的示例分析
本文鏈接:http://aaarwkj.com/article14/godcge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、移動網(wǎng)站建設(shè)微信小程序、微信公眾號、做網(wǎng)站App設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
日本束缚人妻一区二区三区| 国产女技师口爆在线观看| 日本黄色三级三级三级| 久久亚洲女同第一区综合| 国产三级精品电影久久| 国产无套内射三级视频| 色久悠悠婷婷综合在线亚洲| 亚洲av一区二区三区网站| 亚洲成人免费电影久久| 熟女人妻一区二区三区免费看| 亚洲综合一区二区在线视频| 五月婷婷六月丁香伊人妞| 99热在线精品国产观看| 国产高清毛片区1区二区三区 | 日本成人午夜在线观看| 亚洲成av在线免费不卡| 免费欧美一级黄片播放| 播放欧美日韩特黄大片| 日韩熟女av中文字幕| 日本不卡一区二区在线播放| 日韩国产欧美一区二区三区| 先锋影音女同中文字幕| 欧美艳星一区二区三区四区| 日韩欧美精品视频一区| 中文字幕av在线日韩| 国产亚洲无线码一区二区| 亚洲一区二区色黄大片| 精品人妻中文字幕一区有码| 久久av免费一区二区观看| 国一区二区三区四区av| 一区二区三区国产欧美日本| 欧美日韩欧美黄色三级| 国产原创av超爽剧情系列| 午夜夫妻生活视频在线观看| 国产精品久久久久久久av三级| 亚洲欧美另类熟女丝袜| 国产精品日本一区二区| 日韩成人中文字幕在线视频| 欧美大尺度影片在线观看| 国产三级一区二区不卡| 国产一区二区三区在线观看俏佳人|