从 Vue + Java 到 Halo:我为什么最后选择成熟开源系统
把 VPS 从 1G 升级到 2G 之后,我又开始重新考虑博客方案。资源比之前宽裕了一些,于是很自然地想到:要不要直接做一个前后端分离的博客系统?
当时设想的技术栈是 Vue + Java + MySQL + Nginx + Jenkins。前端用 Vue,后端用 Spring Boot,数据库用 MySQL,Nginx 负责反向代理,Jenkins 负责构建和部署。这个组合很常见,也比较符合我原本想练习和掌控系统的想法。
自研方案的吸引力
从技术角度看,自研博客确实很有吸引力。所有功能都可以按自己的想法设计:用户注册、登录、权限、文章管理、评论、分类标签、后台页面、接口结构、数据库表设计,都能完全掌握。
如果目标是练技术,这个方案很合理。做完一个完整博客系统,能接触前端、后端、数据库、部署、运维、安全等很多环节。每个模块都能成为一次练习。
但问题也正是在这里:它太像一个练习项目了。
从零开发的成本比想象中高
继续往下拆,我发现一个正式博客系统并不只是“文章增删改查”。用户系统要考虑密码、权限和安全;文章管理要考虑草稿、发布、编辑器、摘要、封面、SEO;评论要考虑审核和垃圾内容;后台要有可用的界面;分类标签、归档、搜索、站点地图、备份,每一块都需要时间。
这些事情不是不能做,而是会把上线时间拉得很长。更现实的是,我很可能会花很多时间修基础能力,最后博客本身还是半成品。那就和我真正想要的目标偏离了。
我真正想要的是成品博客
这次我慢慢想清楚了一点:我现在不是为了练手开发一个博客系统,而是想尽快拥有一个能正式使用的网站。它应该能通过域名访问,有后台,能发文章,能换主题,能安装插件,能备份,后续还能维护。
在这个目标下,从零开发反而不是最优解。它能带来技术自由度,但也带来大量基础建设成本。对个人博客来说,很多基础功能其实已经有成熟系统做得很好了,我没有必要一开始就全部重写。
最后选择 Halo
最后我选择了 Halo。原因很直接:它是成熟的开源博客系统,已经有后台管理、文章管理、页面管理、主题系统、插件系统、分类标签等能力。部署完成后,我可以把精力放在内容和站点优化上,而不是从登录系统开始造轮子。
Halo 也给后续保留了空间。如果只是换外观,可以改主题;如果想增加能力,可以装插件;如果以后真的有特殊需求,再考虑针对性二开。这个路径比一开始就自研完整系统更稳,也更符合我现在的阶段。
技术方案要服务目标
这次从 HTML 到 Hugo,再到 Vue + Java,最后选择 Halo,让我感受最深的是:技术方案不能只看“我能不能做”,还要看“我现在真正需要什么”。
如果目标是练技术,Vue + Java 自研博客当然值得做。但如果目标是尽快上线一个稳定、好维护、能长期使用的个人网站,成熟开源系统更合适。不是技术越复杂越好,而是越贴近目标越好。