詳解IWinter 一個(gè)路由轉(zhuǎn)控制器的 Nodejs 庫(kù)
IWinter 是一個(gè)路由轉(zhuǎn)控制器的 node 庫(kù),只解決一個(gè)問(wèn)題:為了讓使用者以更優(yōu)雅的姿勢(shì)進(jìn)行路由的編寫。支持在 Express 和 Koa 中使用。
項(xiàng)目地址:https://github.com/yvanwangl/iwinter
簡(jiǎn)介:
最近在學(xué)習(xí)使用 Typescript ,打算把以前寫的博客管理后臺(tái)用 Typescript 進(jìn)行全面重構(gòu),在重構(gòu)服務(wù)端代碼時(shí)接觸到使用了 Typescript 的裝飾器功能??梢杂醚b飾器對(duì)路由進(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;
由于工作中會(huì)使用用 Java 編寫控制層代碼(Spring MVC 的控制層代碼),所以看到這樣的代碼簡(jiǎn)直太親切了。而且相較于以前的路由編寫方式更清晰,更方便維護(hù),所以就將原來(lái)的的代碼進(jìn)行了改造。我使用之后發(fā)現(xiàn)非常好用,我就想讓更多的人都可以使用,所以就誕生了 IWinter 這個(gè)庫(kù)。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'] }; ...
誰(shuí)適合使用 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();
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
node.js回調(diào)函數(shù)之阻塞調(diào)用與非阻塞調(diào)用
本文重點(diǎn)給大家介紹node.js回調(diào)函數(shù)之阻塞調(diào)用和非阻塞調(diào)用,涉及到node.js回調(diào)函數(shù)的相關(guān)知識(shí),對(duì)本文感興趣的朋友一起學(xué)習(xí)吧2015-11-11Node版本升級(jí)和降級(jí)之node版本管理工具nvm詳解
nvm是管理node版本的工具,一個(gè)電腦中可以安裝多個(gè)node版本,當(dāng)我們想使用哪個(gè)版本就切換成哪個(gè)版本,而nvm則是提供切換node版本的工具,這篇文章主要給大家介紹了關(guān)于Node版本升級(jí)和降級(jí)之node版本管理工具nvm的相關(guān)資料,需要的朋友可以參考下2022-08-08Node.js?網(wǎng)絡(luò)框架koa?compose中間件使用解析
這篇文章主要為大家介紹了Node.js?網(wǎng)絡(luò)框架koa?compose中間件使用解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12使用DNode實(shí)現(xiàn)php和nodejs之間通信的簡(jiǎn)單實(shí)例
這篇文章主要介紹了使用DNode實(shí)現(xiàn)php和nodejs之間通信的簡(jiǎn)單實(shí)例,本文講解了DNode的安裝,以及使用的它的步驟和方法,需要的朋友可以參考下2015-07-07node?NPM庫(kù)string-random生成隨機(jī)字符串學(xué)習(xí)使用
這篇文章主要為大家介紹了node?NPM庫(kù)string-random生成隨機(jī)字符串學(xué)習(xí)使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07