Nodejs基础、Nodejs打在一个类似Express的框架、MongoDb的基础、Nodejs操作Mongodb、Koa2入门实战。从0到1学会Nodejs入门教程
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变量