封面

这个网站是怎么做出来的

写作时间:2026-08-27 12:00:00
# build

这个网站从最初的一页个人介绍,一步步长成了现在的样子:一个入口门户、一份自我介绍、一张可交互的校园地图,还有这个刚出生的博客。

写这篇文章,是想把整个过程记录下来 —— 尤其是那些不顺利的地方。对别人也许是经验,对自己是一份纪念。

起点:一页个人介绍

网站最早只是一个单页作品集,用 React + Vite 搭建,深色背景,讲我的故事:数学、摄影、围棋,还有那些仍在展开的方向。

它花了我很多心思,但回头看,真正让我学到东西的,是后来不断"修它"的过程。

第一次优化:让网站变快

第一批优化全是"看不见的":

  • 把六张摄影作品从 JPG 转成 WebP,体积减了将近一半,画质肉眼无差;
  • 清理了十代设计迭代留下的死代码 —— 样式表瘦身了四分之一;
  • 删除了一批写了却从没用上的组件。

做完这些,网站长得一模一样,但更快、更干净了。我当时意识到:优化的最高境界,是用户完全察觉不到

校园地图:这个项目里最折腾的部分

地图功能是后来加的最大的一个。过程值得单独记一笔:

拿到官方地图 PDF 后,我发现它是矢量文件 —— 地图上的文字标注是真实文本。于是我没有用 OCR 猜,而是直接解析 PDF 的文字层,把 42 个地标连坐标一起提取了出来。

然后就是整个项目里最难忘的一个 bug:所有标记在纵向上被翻转了。原因藏得很深 —— 地图引擎 Leaflet 的坐标轴方向和图片像素轴方向相反。我为了找它,绕了很多弯路:校准坐标、怀疑视觉模型、反复截图对比……最后是靠读取页面里标记元素的实际渲染坐标,才把问题钉死。

教训很朴素:当"所有东西都差一点点"的时候,多半是坐标系之类的基础假设错了,而不是细节问题。

云端备注:让地图变成工具

地图不只是展示,我还想要它能用:标注地点、记食堂饭菜、多设备同步。

于是加了一个云端存储:备注存在云数据库里,读取公开、写入需要密码,密码在服务端校验。现在我在任何设备打开地图,都能看到同一份备注,解锁后随手记点什么。

门户与博客:把一切串起来

最后,把个人介绍、校园地图、晚霞实验室和博客,统一成了一个门户首页。

这就是你现在看到的样子。

接下来

博客会记录学习技术、探索研究的过程,也会写点摄影和户外。不保证更新频率,但保证每篇都是真的。

先把这一步走好。