国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 句容市| 长寿区| 岳普湖县| 新巴尔虎左旗| 榕江县| 手机| 三原县| 宁蒗| 拜泉县| 台山市| 行唐县| 青浦区| 东台市| 农安县| 江源县| 长治县| 大安市| 南郑县| 株洲市| 张家港市| 疏附县| 台前县| 泰兴市| 马尔康县| 常宁市| 岳池县| 梅河口市| 贵德县| 舟山市| 青河县| 石棉县| 东丰县| 萨嘎县| 雷波县| 金塔县| 开远市| 湖南省| 东港市| 惠州市| 长阳| 喀喇沁旗|