当前位置: 首页 > 软件库 > Web应用开发 > Web框架 >

route-decorators

授权协议 MIT License
开发语言 JavaScript
所属分类 Web应用开发、 Web框架
软件类型 开源软件
地区 不详
投 递 者 长孙波鸿
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

route-decorators for Koa/Express

NPM

ES7 decorators that simplify Koa and Express route creation. Using these decorators, you can write your controllers like below and have all the routes populated.

Koa

import {controller, get, post} from 'route-decorators'

@controller('/users', middleware1)
class UserCtrl {

  @get('/:id', middleware2, middleware3)
  async get(context, next) {}

  @post(middleware2)
  async post(context, next) {}
}

Express

import {controller, get, post} from 'route-decorators'

@controller('/users', middleware1)
class UserCtrl {

  @get('/:id', middleware2, middleware3)
  async get(req, res, next) {}

  @post(middleware2)
  async post(req, res, next) {}
}

Once the decorators are applied, every controller instance will receive a $routes array, which you can use to define actual Koa/Express routes.

Assume the above UserCtrl definition, you can define routes in UserCtrl's constructor (although really you can put the code anywhere) as follows:

Koa

import Router from 'koa-66'

// Inside controller constructor
this.router = new Router()
for (const {method, url, middleware, fnName} of this.$routes) {
  this.router[method](url, ...middleware, this[fnName].bind(this))
}

Express

import express from 'express'

// Inside controller constructor
this.router = express.Router()
for (const {method, url, middleware, fnName} of this.$routes) {
  this.router[method](url, ...middleware, (req, res, next) => {
    this[fnName](req, res, next).catch(next)
  })
}

You can move the above logic to some base controller in your app and reuse it for every controller. For example:

class BaseCtrl {
  constructor() {
    this.router = new Router()
    for (const {method, url, middleware, fnName} of this.$routes) {
      this.router[method](url, ...middleware, this[fnName].bind(this))
    }
  }
}

@controller(...)
class UserCtrl extends BaseCtrl {
  // decorated methods as above
}

Decorators

  • @controller(path: optional, ...middleware: optional)
  • @route(method, path: optional, ...middleware: optional)
  • @head, @options, @get, @post, @put, @patch, @del, @delete, @all: wrappers of @route that automatically supply the method argument.

Test

npm install
npm test
  • 英文使用说明地址https://championswimmer.in/vuex-module-decorators/ 1、安装 npm install vuex-module-decorators # or yarn add vuex-module-decorators 2、概述 2.1 功能 这个库可以使用下面方式编写 vuex 模块 // eg. /app/store/posts.ts im

  • python decorators 装饰器基础 Decorator 本质 @ 本质是语法糖- Syntactic Sugar 使用@decorator 来修饰某个函数 func 时: @decorator def func(): pass 其解释器会解释成: func = decorator(func) 注意这条语句会被执行 多重装饰器 @decorator_one @decorator_two

  • Python代码里经常看到一个符号@摆在函数的上面一行,这叫decorator,但它到底是什么,表示什么意思,有什么好处呢?decorator是用来修饰函数的,等于将原函数(比如foo)经过了一定加工,达成的效果是foo = our_decorator(foo)这个样子,可以简写成@our_decorator在foo上面。 举个简单的例子:首先我们定义一个函数 def foo(x):

  • flask app例子,app是flask中的Flask类的实例对象。 # myflask.py from flask import Flask app = Flask(__name__) #生成app实例 @app.route('/') def index(): return 'Hello World' if __name__ == '__main__': app.

  • 定义路由文件 /src/router/index.js import Vue from 'vue' import VueRouter from 'vue-router' import routes from './routes' Vue.use(VueRouter) const router = new VueRouter({ mode: 'history', routes }) e

 相关资料
  • 描述 (Description) 它为路由器提供路由,并使用slash后跟colons和参数名称附加路由器的参数。 语法 (Syntax) router.route(route, name, [callback]) 参数 (Parameters) route - 它可以是路由字符串或正则表达式。 name - 它是路由器参数的名称。 callback - 如果省略回调参数,则为路由器的名称。 例

  • Route::get('foo', function(){}); Route::get('foo', 'ControllerName@function'); Route::controller('foo', 'FooController'); 资源路由 Route::resource('posts','PostsController'); // 资源路由器只允许指定动作通过 Route::res

  • 目的 部署应用到 OCP,并创建安全加密路由。 环境 openshift v3.11.16/kubernetes v1.11.0 步骤 创建工程1. CLI 登录到 OCP $ oc login https://master.example.com:8443 -u admin -p admin2. 创建工程 $ oc new-project lab02 部署应用1. S2I 部署 php 应用 $

  • 我阅读了Laravel网站、Stack Overflow和Google上的文档,但仍然不理解Route::资源和Route::controller之间的区别。 其中一个答案是Route::resource用于crud。但是,使用Route::controller,我们可以完成与Route::resource相同的任务,并且我们只能指定所需的操作。 他们看起来像兄弟姐妹: 我们如何选择使用什么?什么

  • 名称 Yaf_Router::route (Since Yaf 1.0.0.5)publicbooleanYaf_Router::route( Yaf_Request_Abstract $request ); 路由一个请求, 本方法不需要主动调用, Yaf_Dispatcher::dispatch会自动调用本方法参数 $request 一个Yaf_Request_Abstract实例返回值 成功返

  • Amazon Route 53是一种高度可用且可扩展的域名系统(DNS)Web服务。 它专为开发人员和企业设计,通过将人类可读的名称(如www.mydomain.com)转换为计算机用于相互连接的数字IP地址(如192.0.2.1),将最终用户路由到Internet应用程序。 如何配置Amazon Route 53? 以下是配置Route 53的步骤。 Step 1 - 使用此链接打开Amazon