詳解IWinter 一個路由轉(zhuǎn)控制器的 Nodejs 庫
IWinter 是一個路由轉(zhuǎn)控制器的 node 庫,只解決一個問題:為了讓使用者以更優(yōu)雅的姿勢進(jìn)行路由的編寫。支持在 Express 和 Koa 中使用。
項目地址:https://github.com/yvanwangl/iwinter
簡介:
最近在學(xué)習(xí)使用 Typescript ,打算把以前寫的博客管理后臺用 Typescript 進(jìn)行全面重構(gòu),在重構(gòu)服務(wù)端代碼時接觸到使用了 Typescript 的裝飾器功能。可以用裝飾器對路由進(jìn)行一層包裝,然后就可以這樣編寫路由:
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 的控制層代碼),所以看到這樣的代碼簡直太親切了。而且相較于以前的路由編寫方式更清晰,更方便維護(hù),所以就將原來的的代碼進(jìn)行了改造。我使用之后發(fā)現(xiàn)非常好用,我就想讓更多的人都可以使用,所以就誕生了 IWinter 這個庫。IWinter 就是將各種裝飾器或裝飾器工廠函數(shù)進(jìn)行封裝然后暴露出一些 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:
- 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();
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用Node.js實現(xiàn)一個簡單的FastCGI服務(wù)器實例
這篇文章主要介紹了使用Node.js實現(xiàn)一個簡單的FastCGI服務(wù)器實例,也可以作為一個比較詳細(xì)的Node.js服務(wù)器創(chuàng)建教程,需要的朋友可以參考下2014-06-06
Node.js設(shè)置CORS跨域請求中多域名白名單的方法
這篇文章主要介紹了Node.js設(shè)置CORS跨域請求中多域名白名單的方法,文中通過示例代碼介紹的非常詳細(xì),相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-03-03
nodejs的http和https下載遠(yuǎn)程資源post數(shù)據(jù)實例
這篇文章主要為大家介紹了nodejs的http和https下載遠(yuǎn)程資源post數(shù)據(jù)實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
nodejs實現(xiàn)獲取本地文件夾下圖片信息功能示例
這篇文章主要介紹了nodejs實現(xiàn)獲取本地文件夾下圖片信息功能,涉及node.js針對文件、目錄的遍歷、讀取等相關(guān)操作技巧,需要的朋友可以參考下2019-06-06
Node.js通過配置?strict-ssl=false解決npm安裝卡住問題
使用npm安裝依賴包是常見的任務(wù)之一,有時會遇到安裝卡住的問題,本文就來介紹一下通過配置?strict-ssl=false解決npm安裝卡住問題,感興趣的可以了解一下2024-12-12

