溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

koa大型web項目中使用路由裝飾器的方法示例

發布時間:2020-10-15 16:42:13 來源:腳本之家 閱讀:153 作者:水痕001 欄目:web開發

一、關于重復造輪子解釋下

在npmjs上搜索關于koa路由裝飾器的已經有那么幾個包了,但是我從幾個包中發現作者的思維僅僅限制于前端開發的思想,項目分層不明確,我們開發kow-web項目可以根據java-web中項目分層的思想來寫項目,項目結構清晰明了,本人封裝這個包也是參考了java-web開發過程中把項目分為四層架構。

1、controllers:路由的控制
2、servers:常用于一些業務邏輯的判斷
3、dao:操作數據庫的
4、models:關于建表的數據模型

二、關于koa2-router-decors包的使用步驟

1、構建一個項目,并創建分層目錄

2、安裝

npm install koa2-router-decors
// or
yarn add koa2-router-decors

3、在中間件中使用我們安裝的包

import { resolve } from 'path';
import Route from 'koa2-router-decors';
// 可以寫到config中統一配置
const API_VERSION = '/api/v1';
/**
 * @Description: 反轉路徑的方法
 * @param {String} 
 * @return: 
 */
const dir = path => resolve(__dirname, path);

/**
 * @Description: 路由中間件讀取controllers中的裝飾器配置
 * @param {type} 
 * @return: 
 */
export default (app) => {
 // 這個地方是要讀取的文件夾目錄
 const apiPath = dir('../controllers/*');
 // 實例化類并調用方法
 const route = new Route(app, apiPath, API_VERSION);
 route.init();
};

4、使用中間件

5、在controllers的文件夾中使用裝飾器

@controller('/user')
export class UserController extends BaseController {
 constructor() {
  super();
 }
 /**
  * 
  * @api {post} /api/v1/user/create/ 添加用戶
  * @apiDescription 創建用戶的接口
  * @apiName createUser
  * @apiGroup users
  * @apiVersion 0.1.0
  * @apiParam {string} username="張三" 用戶名
  * @apiParam {string} mobile 手機號碼
  * @apiParam {string} email 郵箱
  * @apiParam {string} password 密碼
  */
 @post('/create')
 @required({ body: ['username', 'mobile', 'password'] })
 async createUser(ctx) {
  const result = await UserServer.createUser(ctx.request.body);
  ctx.success(result);
 }
 ....
}

6、具體代碼可以參考example中寫的

三、關于example代碼跑起來的說明

1、使用的是mysql

2、mysql建表sql

CREATE TABLE `user` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `username` varchar(30) NOT NULL,
 `mobile` varchar(11) DEFAULT NULL,
 `email` varchar(20) DEFAULT NULL,
 `password` varchar(255) NOT NULL,
 `created_at` datetime DEFAULT CURRENT_TIMESTAMP,
 `updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8

3、在example的根目錄下創建一個.env的文件

DB_HOST=數據庫地址
DB_USERNAME=數據庫連接名
DB_PASSWORD=數據庫連接密碼
DB_DATABASE=數據庫名

四、源碼地址,歡迎小伙伴提出問題,方便點贊一個

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女