
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.3.1 koa-views
JavaScript世界里有无数的模板引擎,甚至写几十行代码就能实现一个,其中比较有名的模板引擎有几十种。所有这些模板引擎都能在Node.js里使用,当然也就能在Koa框架里使用。所有被consolidate.js模块支持的模板引擎都是非常常用的。
下面是一个比较典型的在Koa v2中使用模板引擎的例子。

上面的代码首先引入了koa-views中间件,之后通过app.use()绑定到了app上,实际上是给app对象增加了ctx.render方法的绑定。最后,在后面的中间件里可以使用ctx.render()方法进行视图渲染。由于koa-views是全局的中间件,可以拦截所有请求,所以后面的所有中间件都可以使用ctx.render()方法进行视图渲染。
Koa提供了ctx.state内置对象,并将其作为上下文状态存储。编译模板引擎的时候,模板引擎中的data和ctx.state会合并,合并结果将作为模板引擎使用的最终data。示例如下。
