Alicea Wind的个人网站开发日志(1)

1

这段时间我开始着手搭一个个人网站。目标并不复杂,也不是一开始就想着"上线即成品",而是希望它能成为一个长期生长的东西:能展示项目、能写技术文章,也能承载一些真实的前后端交互,而不是只停留在静态页面。

所以第一步,我给自己定了一个很明确、也很克制的目标:先把前端和后端真正跑通一次。

前端我用的是 Vue 3 + Vite。这个选择本身没什么好说的,开发体验足够顺,构建工具也足够现代,适合做一个结构清晰、可扩展的个人站。后端则选择了 FastAPI,主要原因也很直接:启动快、结构简单、非常适合做"小而完整"的 API 服务。

在功能选择上,我刻意避开了登录、权限、复杂表单之类的东西。那些功能一旦开始做,很容易把注意力全部拖进细节里,反而偏离"练前后端交互"的初衷。最后选定的第一个功能是访问计数。

这是一个看起来很简单的需求:

页面打开一次,后端记录一次访问量,前端把结果展示出来。

但它刚好完整覆盖了一条真实的交互链路:

前端页面加载 → 发起请求 → 后端处理状态 → 返回结果 → 前端根据结果更新 UI。

后端这边,我在最外层的 main.py 里写了一个最小的接口 /api/visit。先不做持久化,只用内存里的变量来累计访问次数,每请求一次就加一,然后返回当前的计数值。这样做的好处是逻辑非常直观,问题也一眼能看出来,适合现在这个阶段。

为了避免以后端口混乱,我一开始就把端口约定死了:

后端固定跑在 64000,前端固定跑在 51000。

FastAPI 这边通过 CORS 只允许来自 51000 的请求,这样前后端边界非常清楚,也能尽早暴露配置问题。

前端这边的改动其实不多。我在 App.vue 里加了一段很独立的逻辑:

页面 onMounted 时,请求 /api/visit,维护 loading / error / success 三种状态,然后把访问次数显示在页面右下角,用一个 position: fixed 的小浮层,不干扰任何已有布局。

它让我确认了几件事:

-- 前端请求时机是正确的

-- 接口返回的数据结构是稳定的

-- 跨域配置是生效的

-- 前端的状态变化是可控、可预期的

在这个过程中也踩到了一些很现实的小坑。比如 Vite 默认端口是 5173,如果不显式配置,怎么重启都不会变;再比如构建时 CSS 的 :global(html, body) 写法在生产构建里会有警告,需要拆开写。这些都不是"大问题",但如果不在一开始处理好,后面会反复出现。

到这一步为止,这个网站还远远谈不上"功能完整",但我反而觉得这是一个很好的起点。因为它已经不是"只有页面的前端项目",也不是"孤立跑着的后端服务",而是一个真正开始有"系统感"的东西。

接下来要做的事情也很清晰:

把访问计数从内存换成持久化存储;

考虑按页面区分统计;

再逐步把文章列表、项目数据从静态内容迁移成接口数据。

不急着上线,也不急着堆功能。

先把每一条前后端链路走扎实,比什么都重要

相关推荐
前端精髓1 天前
结构化输出with_structured_output(抽卡)
python·langchain
尹人入圣1 天前
目前热门的IP驱动产业新场景新工具
网络·python·网络协议·tcp/ip
Nuanyt1 天前
Agent 学习笔记(下篇三):上线工程、进阶选择与操作界面(Stage 7 / 7.5 / 8 + 延伸路线)
笔记·python·学习·memory·aiagent·harness
吴卫斌1 天前
定投ETF实战指南(四):行业/主题ETF——定投的“进攻端“
开发语言·python·股票·量化
2601_967987371 天前
Python——入门级(定义功能def函数)
python·函数·可变参数·默认参数·关键字参数
专注仿真1 天前
梯度提升类(XFBoost)算法详解与代码实例
开发语言·人工智能·python·算法·大模型训练·控制算法
外收内放1 天前
Python基础语法练习题(75)
开发语言·python·学习
黑十1 天前
PyTorch 报 “no CUDA GPUs are available“ 怎么办?3 步排查
服务器·网络·人工智能·pytorch·python
threelab1 天前
开源图片去水印代码
python
taller_20001 天前
【012】数据类型入门: Excel 数据到 Python 值的转换
python·excel·pie·py