时间:2021-05-25
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:
IWinter 安装 及 使用
npm install --save iwinterimport 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();以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
AngularJS控制器controller的详解一、控制器概念控制器在Angualrjs中的作用是增强视图,并且是一个函数,用来向视图的作用域中添加额外的功能
本文为大家分享了nodejs个人博客开发的数据分页,具体内容如下控制器路由定义首页路由:http://localhost:8888/首页分页路由:http://
RubyonRails目录结构+app/#控制器、模型、视图、帮助方法、邮件、静态资源+bin/#rails脚本+config/#路由、数据库等+db/#数据库
首先,先做一个简单的表单页面编辑一条路由Route::post('/submit','FormController@store');创建一个控制器
本文实例讲述了Laravel框架路由和控制器的绑定操作方法。分享给大家供大家参考,具体如下:路由和控制器的关系路由文件地址在\app\Http\routes.p