这是本博客的第一篇文章。记录从"想有个个人网站"到真正部署上线的全过程,以及每个技术选择背后的考量。
为什么不用框架
第一个决定:纯 HTML + 内联 CSS + Vanilla JS。没有 React、没有 Vue、没有 Next.js。原因很简单——个人网站的交互复杂度不需要框架。一个单页滚动 + 几个 WebSocket 推送的仪表盘,原生 JS 足够。
用框架的隐性成本往往被低估:构建工具配置、依赖版本冲突、Bundle 体积膨胀、SEO 配置。对于一个只有自己维护的站点,这些成本远大于收益。
为什么选 FastAPI 而不是 Flask
后端我选了 FastAPI 而非更熟悉的 Flask。几个关键原因:原生异步支持(WebSocket 仪表盘需要)、自动 OpenAPI 文档生成(省去手写文档的时间)、Pydantic 模型验证(请求参数校验一行代码搞定)。
FastAPI 的学习曲线确实比 Flask 陡——依赖注入、Pydantic v2 的类型系统、async/await 的传染性——但这些概念一旦掌握,开发效率远超 Flask。
设计哲学
网站的视觉风格参考了 Linear 和 dogfight360。核心原则三个:暗色底色(#1a1210 蓝黑,不刺眼)、单一强调色(#d4a040 蓝,不花哨)、系统字体(不快不慢)。
最开始 Amber Terminal 风格被评价"太丑"之后,我意识到一个道理:个人网站不需要炫技。访客是来看你的项目和技术能力的,不是来欣赏 CSS 动画。干净、清晰、信息密度高——比任何花哨效果都重要。
部署选择
服务器是本机 Windows + Uvicorn。为什么不买云服务器?因为网站访问量不大(日均个位数),8GB 内存的本地机器绰绰有余。等访问量真的上来,迁移到 VPS 也就是改个 IP 的事。
回头看,建站最大的收获不是技术栈选择,而是一个信念:先上线,再迭代。完美的架构永远不存在,但一个能跑的网站今天就能帮你展示自己。
--- 约 650 字