首頁  >  文章  >  web前端  >  IWinter一個路由轉控制器的Nodejs函式庫詳解

IWinter一個路由轉控制器的Nodejs函式庫詳解

小云云
小云云原創
2018-01-18 17:04:221370瀏覽

本文主要介紹了詳解IWinter 一個路由轉控制器的 Nodejs 函式庫,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟著小編過來看看吧,希望能幫助大家。

IWinter 是一個路由轉控制器的 node 函式庫,只解決一個問題:為了讓使用者以更優雅的姿勢進行路由的編寫。支援在 Express 和 Koa 中使用。

專案地址:https://github.com/yvanwangl/iwinter

#簡介:

最近在學習使用Typescript ,打算把以前寫的部落格管理後台以Typescript 進行全面重構,在重構服務端程式碼時接觸到使用了Typescript 的裝飾器功能。可以用裝飾器對路由進行一層包裝,然後就可以這樣編寫路由:


import {Path, GET, POST, PathParam, BodyParam} from 'iwinter';

@Path('/api/orders')
class OrdersController {

  @GET
  @Path('/:name/:id', (ctx, next)=> ~~ctx.params.id > 20)
    getAllOrders(@PathParam('id') id: number, @PathParam('name') name: string){
    return [{
        id: id, name, content: 'test', author: 'test', comments: []
      }];
  }

  @POST
  @Path('/add')
  addPost(@BodyParam('order') order: object){
    return order;
  }
}

export default OrdersController;

由於工作中會使用用Java 編寫控制層程式碼(Spring MVC 的控制層代碼),所以看到這樣的代碼簡直太親切了。而且相較於以前的路由編寫方式更清晰,更方便維護,所以就將原來的程式碼進行了改造。我使用後發現非常好用,我就想讓更多的人都可以使用,所以就誕生了 IWinter 這個庫。 IWinter 就是將各種裝飾器或裝飾器工廠函數進行封裝然後暴露出一些 API 供大家使用。從此就告別這樣寫路由了;)


//app.js
...
let users = require('./routes/users');
let orders = require('./routes/orders');

app.use('/api/users', users);
app.use('/api/orders', orders);
...

//routers/orders.js
...
router.route('/')
  .get(function (req, res, next) {
    let {page, timeRange, customerId, orderNumber} = req.query;
    let limit = constants.PAGE_SIZE;
    let skip = (page - 1) * limit;
    let currentUser = global[Symbol.for('currentUser')];
    let queryCondition = {
      userId: currentUser['_id']
    };
      ...

誰適合使用IWinter:

  1. Nodejs 使用者



##Typescript 使用者

Express / Koa 使用者


##IWinter 安裝及使用

##### ########
npm install --save iwinter
#########
import IWinter from 'iwinter';
###Koa 中如何使用:############
import * as Router from 'koa-router';
...
app.use(new IWinter({
    engine: 'koa',
  router: new Router(),
  dir: path.join(__dirname, 'controller')
}).controller());
...
###Express 中如何使用:## ##########
import * as express from 'express';
let app = express();
let router = express.Router();
...
new IWinter({
  engine: 'express',
  router: app,
  dir: path.join(__dirname, 'controller'),
    prefix: ''
}).controller();
###相關推薦:#############Node.js設計模式使用流進行編碼########### Node.js中環境變數process.env先詳解############JS與Node.js中的事件循環詳解######

以上是IWinter一個路由轉控制器的Nodejs函式庫詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn