Koa2设置全局变量_koa2给所有页面渲染全局数据 ctx.state


Koajs入门视频教程在线学习地址https://www.bilibili.com/video/BV1xm4y1c7zr/?p=1

Koajs入门视频教程网盘下载地址https://pan.baidu.com/s/1QN_XkXRXmIw6V7HevntBQQ 提取码:abcd


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变量