国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > JS > 正文

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

2024-05-06 16:40:56
字體:
來源:轉載
供稿:網友

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 用戶
  2. Typescript 用戶
  3. 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();

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 方山县| 龙胜| 台中市| 延庆县| 青阳县| 临洮县| 宁强县| 佳木斯市| 佛山市| 尼木县| 房山区| 东平县| 阳原县| 三江| 淳化县| 舒城县| 威信县| 宁陵县| 张家港市| 彭水| 方正县| 怀集县| 罗定市| 廊坊市| 镇宁| 瑞丽市| 宝山区| 封丘县| 宜丰县| 黄梅县| 宁远县| 如东县| 故城县| 沾益县| 凤阳县| 革吉县| 密云县| 西贡区| 绍兴县| 南康市| 宁陵县|