zoukankan      html  css  js  c++  java
  • egg 官方文档之:框架扩展(Application、Context、Request、Response、Helper的访问方式及扩展)

    Application

    app 对象指的是 Koa 的全局应用对象,全局只有一个,在应用启动时被创建。
    访问方式:

    • ctx.app
    • Controller,Middleware,Helper,Service 中都可以通过 this.app 访问到 Application 对象,例如 this.app.config 访问配置对象。
    • 在 app.js 中 app 对象会作为第一个参数注入到入口函数中
    // app.js
    module.exports = app => {
      // 使用 app 对象
    };
    

    Context

    Context 指的是 Koa 的请求上下文,这是 请求级别 的对象,每次请求生成一个 Context 实例,通常我们也简写成 ctx。在所有的文档中,Context 和 ctx 都是指 Koa 的上下文对象。
    访问方式

    • middleware 中 this 就是 ctx,例如 this.cookies.get('foo')。
    • controller 有两种写法,类的写法通过 this.ctx,方法的写法直接通过 ctx 入参。
    • helper,service 中的 this 指向 helper,service 对象本身,使用 this.ctx 访问 context 对象,例如 this.ctx.cookies.get('foo')。

    Request

    Request 对象和 Koa 的 Request 对象相同,是 请求级别 的对象,它提供了大量请求相关的属性和方法供使用。
    访问方式
    ctx.request
    ctx 上的很多属性和方法都被代理到 request 对象上,对于这些属性和方法使用 ctx 和使用 request 去访问它们是等价的,例如 ctx.url === ctx.request.url。
    Koa 内置的代理 request 的属性和方法列表:Koa - Request aliases

    Response

    Response 对象和 Koa 的 Response 对象相同,是 请求级别 的对象,它提供了大量响应相关的属性和方法供使用。
    访问方式
    ctx.response
    ctx 上的很多属性和方法都被代理到 response 对象上,对于这些属性和方法使用 ctx 和使用 response 去访问它们是等价的,例如 ctx.status = 404 和 ctx.response.status = 404 是等价的。
    Koa 内置的代理 response 的属性和方法列表:Koa Response aliases

    Helper

    Helper 函数用来提供一些实用的 utility 函数。
    它的作用在于我们可以将一些常用的动作抽离在 helper.js 里面成为一个独立的函数,这样可以用 JavaScript 来写复杂的逻辑,避免逻辑分散各处。另外还有一个好处是 Helper 这样一个简单的函数,可以让我们更容易编写测试用例。
    框架内置了一些常用的 Helper 函数。我们也可以编写自定义的 Helper 函数。
    访问方式
    通过 ctx.helper 访问到 helper 对象,例如:

    // 假设在 app/router.js 中定义了 home router
    app.get('home', '/', 'home.index');
    
    // 使用 helper 计算指定 url path
    ctx.helper.pathFor('home', { by: 'recent', limit: 20 })
    // => /?by=recent&limit=20
    

    按照环境进行扩展

    另外,还可以根据环境进行有选择的扩展,例如,只在 unittest 环境中提供 mockXX() 方法以便进行 mock 方便测试。

    // app/extend/application.unittest.js
    module.exports = {
      mockXX(k, v) {
      }
    };
    

    这个文件只会在 unittest 环境加载。
    同理,对于 Application,Context,Request,Response,Helper 都可以使用这种方式针对某个环境进行扩展,更多参见运行环境

  • 相关阅读:
    响应式笔记(1)
    javascript复制文章加版权声明代码
    div的水平和垂直居中
    javascript随机打乱数组
    javascript操作字符串的方法
    《Javascript高级程序设计》读书笔记(1-3章)
    一个将 footer 保持在底部的最好方法
    Python内置的字符串处理函数整理
    c c++怎么判断一个字符串中是否含有汉字
    shell的if判断
  • 原文地址:https://www.cnblogs.com/cag2050/p/9914335.html
Copyright © 2011-2022 走看看