koa大型web項目中使用路由裝飾器

1、關於重複造輪子解釋下

npmjs上搜索關於koa路由裝飾器的已經有那麼幾個包了,可是我從幾個包中發現做者的思惟僅僅限制於前端開發的思想,項目分層不明確,咱們開發kow-web項目能夠根據java-web中項目分層的思想來寫項目,項目結構清晰明瞭,本人封裝這個包也是參考了java-web開發過程當中把項目分爲四層架構。前端

  • 一、controllers:路由的控制
  • 二、servers:經常使用於一些業務邏輯的判斷
  • 三、dao:操做數據庫的
  • 四、models:關於建表的數據模型

2、關於koa2-router-decors包的使用步驟

  • 一、構建一個項目,並建立分層目錄java

  • 二、安裝mysql

    npm install koa2-router-decors
    // or
    yarn add koa2-router-decors
    複製代碼
  • 三、在中間件中使用咱們安裝的包git

    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();
    };
    複製代碼
  • 四、使用中間件github

  • 五、在controllers的文件夾中使用裝飾器web

    @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);
      }
      ....
    }
    複製代碼
  • 六、具體代碼能夠參考example中寫的sql

3、關於example代碼跑起來的說明

  • 一、使用的是mysql數據庫

  • 二、mysql建表sqlnpm

    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
    複製代碼
  • 三、在example的根目錄下建立一個.env的文件api

    DB_HOST=數據庫地址
    DB_USERNAME=數據庫鏈接名
    DB_PASSWORD=數據庫鏈接密碼
    DB_DATABASE=數據庫名
    複製代碼

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

相關文章
相關標籤/搜索