最稳妥方案是用 JavaScript 动态写入版权年份,通过 document.getElementById('copyright-year').textContent = new Date().getFullYear() 实现,兼容性好、可控性强,避免 document.write 清空页面等风险。

用 JavaScript 动态写入当前年份最简方案
直接在版权文字里用 document.write 或 innerHTML 插入年份,是最轻量、兼容性最好的做法。不需要引入外部库,也不依赖服务端渲染。
常见错误是把 new Date().getFullYear() 写死成字符串,比如写成 © 2020–2023,结果到 2024 年就过期了。
- 推荐放在页脚
<footer>末尾,用document.getElementById或直接操作document.querySelector - 避免用
document.write(已废弃且会清空页面),改用textContent或innerHTML - 示例:
<footer>© <span id="copyright-year"></span> Your Site</footer><br><script><br>document.getElementById("copyright-year").textContent = new Date().getFullYear();<br></script>
Vue / React 等框架中怎么写
在组件模板里直接调用 new Date().getFullYear() 是可行的,但要注意 SSR(服务端渲染)场景下可能返回构建时年份而非访问时年份。
- Vue 单文件组件:在
data或computed中返回new Date().getFullYear(),避免写在模板字面量里 - React 函数组件:用
useEffect+useState初始化年份,或直接在 JSX 中写{new Date().getFullYear()}(注意 CSR 环境才准确) - Next.js / Nuxt 等 SSR 框架:必须在客户端生命周期中执行,否则首屏渲染出的年份会滞后
纯静态 HTML 不支持 JS 怎么办
如果部署环境禁用 JavaScript(如某些政府/内网站点),就无法动态更新——这是硬限制,没有绕过办法。
立即学习“前端免费学习笔记(深入)”;
此时只能接受手动维护,或借助构建工具在打包时注入年份。
- Webpack:用
html-webpack-plugin的templateParameters注入currentYear: new Date().getFullYear() - Vite:在
index.html中用<!--%CURRENT_YEAR%-->占位符,配合插件替换 - GitHub Pages + Jekyll:用
{{ 'now' | date: '%Y' }}Liquid 语法(仅限 Jekyll 构建时生效)
为什么不能用 CSS 或 meta 标签实现
CSS 无法生成内容文本,<meta name="copyright" content="2020–2023"> 这类标签对用户不可见,搜索引擎也不当作版权年份展示。
试图用伪元素 ::after 拼接年份,本质还是得靠 JS 提供数据源,否则只能写死。
-
:after的content属性不支持 JS 表达式或变量 - 所有“无 JS 实现自动更新”的方案,实际都依赖构建时替换或服务端插入
- 真正零配置、零构建、纯静态又能自动更新的路径只有一条:启用并正确使用 JS



















