koa大型web項(xiàng)目中使用路由裝飾器的方法示例
一、關(guān)于重復(fù)造輪子解釋下
在npmjs上搜索關(guān)于koa路由裝飾器的已經(jīng)有那么幾個(gè)包了,但是我從幾個(gè)包中發(fā)現(xiàn)作者的思維僅僅限制于前端開發(fā)的思想,項(xiàng)目分層不明確,我們開發(fā)kow-web項(xiàng)目可以根據(jù)java-web中項(xiàng)目分層的思想來(lái)寫項(xiàng)目,項(xiàng)目結(jié)構(gòu)清晰明了,本人封裝這個(gè)包也是參考了java-web開發(fā)過(guò)程中把項(xiàng)目分為四層架構(gòu)。
1、controllers:路由的控制
2、servers:常用于一些業(yè)務(wù)邏輯的判斷
3、dao:操作數(shù)據(jù)庫(kù)的
4、models:關(guān)于建表的數(shù)據(jù)模型
二、關(guān)于koa2-router-decors包的使用步驟
1、構(gòu)建一個(gè)項(xiàng)目,并創(chuàng)建分層目錄
2、安裝
npm install koa2-router-decors // or yarn add koa2-router-decors
3、在中間件中使用我們安裝的包
import { resolve } from 'path';
import Route from 'koa2-router-decors';
// 可以寫到config中統(tǒng)一配置
const API_VERSION = '/api/v1';
/**
* @Description: 反轉(zhuǎn)路徑的方法
* @param {String}
* @return:
*/
const dir = path => resolve(__dirname, path);
/**
* @Description: 路由中間件讀取controllers中的裝飾器配置
* @param {type}
* @return:
*/
export default (app) => {
// 這個(gè)地方是要讀取的文件夾目錄
const apiPath = dir('../controllers/*');
// 實(shí)例化類并調(diào)用方法
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 創(chuàng)建用戶的接口
* @apiName createUser
* @apiGroup users
* @apiVersion 0.1.0
* @apiParam {string} username="張三" 用戶名
* @apiParam {string} mobile 手機(jī)號(hào)碼
* @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中寫的
三、關(guān)于example代碼跑起來(lái)的說(shuō)明
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的根目錄下創(chuàng)建一個(gè).env的文件
DB_HOST=數(shù)據(jù)庫(kù)地址 DB_USERNAME=數(shù)據(jù)庫(kù)連接名 DB_PASSWORD=數(shù)據(jù)庫(kù)連接密碼 DB_DATABASE=數(shù)據(jù)庫(kù)名
四、源碼地址,歡迎小伙伴提出問題,方便點(diǎn)贊一個(gè)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
node.js調(diào)用C++開發(fā)的模塊實(shí)例
這篇文章主要介紹了node.js調(diào)用C++開發(fā)的模塊實(shí)例,在node的程序中,如果有大數(shù)據(jù)量的計(jì)算,處理起來(lái)比較慢,可以用C++來(lái)處理,然后通過(guò)回調(diào)(callback的形式),返回給node,需要的朋友可以參考下2015-07-07
Nodejs回調(diào)加超時(shí)限制兩種實(shí)現(xiàn)方法
這篇文章主要介紹了Nodejs回調(diào)加超時(shí)限制兩種實(shí)現(xiàn)方法的相關(guān)資料,需要的朋友可以參考下2017-06-06
Node.js中調(diào)用mysql存儲(chǔ)過(guò)程示例
這篇文章主要介紹了Node.js中調(diào)用mysql存儲(chǔ)過(guò)程示例,本文在windows環(huán)境測(cè)試通過(guò),本文一并給出了創(chuàng)建數(shù)據(jù)庫(kù)、錄入數(shù)據(jù)、創(chuàng)建存儲(chǔ)過(guò)程、調(diào)用存儲(chǔ)過(guò)程等例子,需要的朋友可以參考下2014-12-12
基于NodeJS的前后端分離的思考與實(shí)踐(二)模版探索
在傳統(tǒng)的開發(fā)模式中,瀏覽器端與服務(wù)器端是由不同的前后端兩個(gè)團(tuán)隊(duì)開發(fā),但是模版卻又在這兩者中間的模糊地帶。因此模版上面總不可避免的越來(lái)越多復(fù)雜邏輯,最終難以維護(hù)。2014-09-09

