作为一个开发者,个人网站是展示自我技术栈和审美的最佳窗口。最近,我花了一些时间对我的个人网站进行了彻底的重构。在这篇文章中,我将分享为什么我决定重构,我的技术选型思考,以及在过程中遇到的一些挑战和解决方案。
为什么要重构?
我的旧网站是基于 Docsify 构建的。Docsify 是一个非常优秀的文档生成工具,轻量且易用。但随着我对网站定制化需求的增加,我发现 Docsify 存在一些局限性:
- SEO 不友好: 默认情况下,Docsify 是单页应用(SPA),内容通过 JavaScript 动态渲染,这对搜索引擎的抓取不太友好。
- 加载性能: 首次加载需要下载解析 JS 才能显示内容,首屏时间(FCP)不够理想。
- 布局限制: Docsify 的主题定制能力有限,很难实现复杂的个性化布局。
技术选型:回归基础
在考察了 Next.js, Gatsby, Hugo 等现代静态站点生成器(SSG)后,我做出了一个“复古”的决定:使用原生 HTML, CSS 和 JavaScript。
原因很简单:
- 极致的性能: 没有比纯 HTML 更快的了。没有 hydration,没有复杂的运行时。
- 完全的控制: 每一行代码都是我写的,我可以精确控制 DOM 结构和样式。
- 学习与探索: 抛开框架的抽象,重新审视 Web 标准的原生能力(如 CSS Variables, Grid, ES Modules)。
重构亮点
1. 响应式设计与暗色模式
我使用了 CSS Variables 来定义主题色。通过简单的 JS 切换 `html` 标签上的 `data-theme` 属性,即可实现秒开的暗色模式切换,并且没有闪烁问题。
:root {
--bg-color: #ffffff;
--text-color: #333333;
}
[data-theme="dark"] {
--bg-color: #1a1a1a;
--text-color: #f0f0f0;
}
2. 国际化 (i18n)
为了支持中英双语,我采用了目录结构区分语言的方式(`/` 和 `/en/`)。这种方式对 SEO 最为友好,配合 `hreflang` 标签,可以让搜索引擎准确识别不同语言版本。
3. 无构建步骤
现在的开发流程非常简单。没有 `npm install`,没有 `npm run build`。修改完代码,直接推送到 GitHub,GitHub Pages 就会自动部署。这种“所见即所得”的开发体验让人感到无比轻松。
结语
这次重构让我重新找回了写代码的纯粹乐趣。有时候,少即是多。在这个框架横行的时代,回归原生 Web 开发,不仅是一种技术选择,更是一种对简单、高效的追求。