node express,如何在所有页面侧边栏添加文章归档功能?
最近在用express+art模板引擎开发一个博客,想在侧边栏添加一个文章归档、标签页的功能。大概这样
日期分类是通过查询筛选处理 然后渲染到模板引擎,由于前台所有页面需要访问,我就在访问路由前加了一个中间件,将日期处理好发送给全局变量
const dateList = await Article.find({}, {createdDate: 1}).sort({createdDate: -1})
const archive = []
dateList.forEach(item => {
archive.push(dayjs(item.createdDate).format('YYYY-MM'))
})
res.locals.archives = Array.from(new Set(archive))
next()
{{each archives}}
<li><a href="/category/{{$value.split('-')[0]}}/{{$value.split('-')[1]}}" class="text-muted">{{$value}}</a></li>
{{/each}}
这样缺点是每次访问路由都要调用这个查询,感觉很浪费性能,有没有可以只在首次加载页面的时候调用一次的方法,或者更好的解决方案。感觉我的方法太笨了,自学确实有太多不懂的地方
还遇到一个问题,在中间件中使用 res.locals
模板页面可以接收到值,req.app.locals
就接收不到(路由中我是这样写的),不太清楚什么区别
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
关于归档,可以直接维护一个json文件或者redis缓存来处理。启动服务时重置数据。
每次新增文章,修改,删除时再处理该数据即可。
locals问题感觉这篇写的比较容易理解。链接