Koa2如何设置全局变量呢或者koa2给所有页面渲染全局数据呢,比如网站前台每个页面都用到导航数据,这样的话我们需要在每个路由里面去数据库查询导航数据,然后渲染,我们想的是可以在全局查询好数据直接渲染,下面我们看看如何实现。
Koa2中可以通过ctx.state配置全局变量。ctx.state配置的全局变量我们不仅可以在其他的路由页面使用,我们还可以在全局模板使用.
如下代码:
//配置中间件 获取url的地址
router.use(async (ctx,next)=>{
//console.log(ctx.request.header.host);
var pathname=url.parse(ctx.request.url).pathname;
//导航条的数据
var navResult=await DB.find('nav',{$or:[{'status':1},{'status':'1'}]},{},{
sortJson:{'sort':1}
})
//模板引擎配置全局的变量
ctx.state.nav=navResult;
ctx.state.pathname=pathname;
await next()
})
其中ctx.state后面的变量是随便写的。
这样的话我们就可以在模板任意地方 任意路由使用pathname。也可以在其他的路由中通过
ctx.state.pathname获取全局的pathname变量