node express,如何在所有页面侧边栏添加文章归档功能?

发布于 2022-09-12 23:22:07 字数 893 浏览 55 评论 0

最近在用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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

聚集的泪 2022-09-19 23:22:07

关于归档,可以直接维护一个json文件或者redis缓存来处理。启动服务时重置数据。
每次新增文章,修改,删除时再处理该数据即可。

locals问题感觉这篇写的比较容易理解。链接

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文