帮酷LOGO
  • 显示原文与译文双语对照的内容
Convert koa generator-based middleware to promise-based middleware

  • 源代码名称:convert
  • 源代码网址:http://www.github.com/koajs/convert
  • convert源代码文档
  • convert源代码下载
  • Git URL:
    git://www.github.com/koajs/convert.git
  • Git Clone代码到本地:
    git clone http://www.github.com/koajs/convert
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/koajs/convert
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • koa转换

    npm versionbuild status

    将koa遗留( 0.x & 1.x ) 生成器中间件转换为现代的promise中间件( 2.x ) 。

    它还可以以将现代的诺基亚中间件转换回旧的发生器中间件( 帮助现代中间件支持 koa 0.x 或者 1.x ) 。

    注释

    路由器中间件是这里的特例。 因为它是内部的reimplements中间件组合,所以我们不能简单地转换它。

    你可以对路由使用以下软件包,这些软件包现在是 koa 2.x:

    安装

    $ npm install koa-convert

    用法

    constKoa=require('koa') // koa v2.xconstconvert=require('koa-convert')constapp=newKoa()app.use(modernMiddleware)app.use(convert(legacyMiddleware))app.use(convert.compose(legacyMiddleware, modernMiddleware))function*legacyMiddleware (next) {
     // beforeyield next
     // after}functionmodernMiddleware (ctx, next) {
     // beforereturnnext().then(() => {
     // after })
    }

    区别传统中间件和现代中间件

    在 koa 0.x 和 1.x ( 没有实验标志) 中,app.use 有断言,所有( 旧的) 中间件都必须是生成器函数,并且它是通过 fn.constructor.name == 'GeneratorFunction' 在这里的

    因此,我们可以将传统的和现代的中间件与 fn.constructor.name == 'GeneratorFunction'

    迁移

    app.use(legacyMiddleware) 在 0.x 和 1.x 中无处不在,手动将它们全部更改为 app.use(convert(legacyMiddleware)) 是很痛苦的。

    你可以使用以下代码段简化迁移。

    const_use=app.useapp.use=x=>_use.call(app, convert(x))

    上代码Fragment将覆盖 app.use 方法,并隐式地将所有遗留生成器中间件转换为。

    因此,你可以同时拥有 app.use(modernMiddleware)app.use(legacyMiddleware) 以及你的0.x 或者 1.x 不需要修改就可以工作。

    完整的示例:

    constKoa=require('koa') // v2.xconstconvert=require('koa-convert')constapp=newKoa()// ---------- override app.use method ----------const_use=app.useapp.use=x=>_use.call(app, convert(x))// ---------- end ----------app.use(modernMiddleware)// this will be converted to modern promise middleware implicitlyapp.use(legacyMiddleware)function*legacyMiddleware (next) {
     // beforeyield next
     // after}functionmodernMiddleware (ctx, next) {
     // beforereturnnext().then(() => {
     // after })
    }

    API

    convert()

    将遗留生成器中间件转换为现代承诺中间件。

    modernMiddleware =convert(legacyMiddleware)
    convert.compose()

    转换和组合多个中间件( 可以混合传统和现代的) 并返回现代的promise中间件。

    composedModernMiddleware =convert.compose(legacyMiddleware, modernMiddleware)// orcomposedModernMiddleware =convert.compose([legacyMiddleware, modernMiddleware])
    convert.back()

    将现代承诺中间件转换为传统的生成器中间件。

    这有助于帮助现代的中间件支持 koa 0.x 或者 1. x.

    legacyMiddleware =convert.back(modernMiddleware)

    许可证

    MIT




    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语