一、關于重復造輪子解釋下
在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=數據庫名
四、源碼地址,歡迎小伙伴提出問題,方便點贊一個
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。