app实例对象

maty()方法执行后创建一个app对象,该对象继承自Koa Application。

首先,app对象具备Koa Application的所有方法和属性。比如app.use()、app.listen()、app.callback()常用方法。详细可参见Koa官网

其次,maty框架对app对象进行了方法的扩展。主要方法如下:

set(name, value)

存储name对应的value,可用作全局存储。在业务代码中通过ctx.app.set设置。

请勿设置请求周期内的值,该值是全局变量。

须避免使用已经存在于app.props属性中的name。查看已有name列表可使用Object.keys(app.props)。

get(name)

获取name对应的value。在业务代码中通过ctx.app.get获取。

filter(stageName, fn(ctx, next))

添加一个过滤器。stageName目前只能是 ['request', 'response']中的一个,fn是一个中间件处理函数。详细内容请参见Filter过滤器的介绍。

engine(extName, render(viewFilePath, data))

添加extName对应的后缀名的模板渲染方法render。比如:

// 添加后缀为jade的模板渲染方法,例如home.jade文件
app.engine('jade', (filePath, data) => {
  const fn = jade.compileFile(filePath, {
    cache: false
  });
  const html = fn(data);

  return html;
});

extName是模板文件的后缀名,不需要加‘点’。app.engine('.html')是错误的,app.engine('html')是正确的。

render方法接受模板文件的绝对路径和传入的数据(ctx.state和ctx.apiData合并的数据),须为同步、异步或返回Promise的方法。

maty框架通过app.set('view engine', extName)来配置默认渲染引擎。默认引擎的作用是在Router配置的view值可以省略后缀名。

mount([path,] koaApp)

挂载maty服务到koaApp上,并只处理path开头的请求路径。path参数可选。

当需要接入到已有应用时,使用该方法。

Last updated