IWinter 是一個(gè)路由轉(zhuǎn)控制器的 node 庫(kù),只解決一個(gè)問(wèn)題:為了讓使用者以更優(yōu)雅的姿勢(shì)進(jìn)行路由的編寫(xiě)。支持在 Express 和 Koa 中使用。
項(xiàng)目地址:https://github.com/yvanwangl/iwinter
簡(jiǎn)介:
最近在學(xué)習(xí)使用 Typescript ,打算把以前寫(xiě)的博客管理后臺(tái)用 Typescript 進(jìn)行全面重構(gòu),在重構(gòu)服務(wù)端代碼時(shí)接觸到使用了 Typescript 的裝飾器功能??梢杂醚b飾器對(duì)路由進(jìn)行一層包裝,然后就可以這樣編寫(xiě)路由:
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;由于工作中會(huì)使用用 Java 編寫(xiě)控制層代碼(Spring MVC 的控制層代碼),所以看到這樣的代碼簡(jiǎn)直太親切了。而且相較于以前的路由編寫(xiě)方式更清晰,更方便維護(hù),所以就將原來(lái)的的代碼進(jìn)行了改造。我使用之后發(fā)現(xiàn)非常好用,我就想讓更多的人都可以使用,所以就誕生了 IWinter 這個(gè)庫(kù)。IWinter 就是將各種裝飾器或裝飾器工廠函數(shù)進(jìn)行封裝然后暴露出一些 API 供大家使用。從此就告別這樣編寫(xiě)路由了 ;)
//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']    };      ...誰(shuí)適合使用 IWinter:
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();以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注