如何在Eleventy框架中使用Nunjucks获取当前月份?
问题排查与解决方案
存在的问题
- 你编写的短代码本身语法没有错误,但Eleventy是静态站点生成器,短代码会在站点构建阶段执行,返回的是你执行构建命令时的月份,站点部署后不会自动随时间更新,除非你每月重新执行一次构建流程。
- 代码层面的写法可以简化,无需逐个给月份数组下标赋值。
可行方案
方案1:保留静态短代码(适合每月会固定重新构建站点的场景)
优化后的短代码写法更简洁:
config.addShortcode("month", () => { const months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] return months[new Date().getMonth()] })
使用方式和之前一致,在模板中直接调用对应短代码标签即可。
方案2:客户端动态渲染实时月份(不需要重新构建,访问时自动更新)
如果需要页面展示用户访问时的实时月份,不需要依赖Eleventy构建,直接在页面模板中插入前端JS代码即可:
<span id="current-month"></span> <script> const months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] document.getElementById("current-month").textContent = months[new Date().getMonth()] </script>
内容的提问来源于stack exchange,提问作者kuwts
相关产品推荐
相关产品推荐

