博客重构记:从前后端分离,又回到了“不分”
这个网站 2019 年就上线了,到今年已经换了好几副面孔。前一阵,我把它又重写了一遍——这次用的是 Nuxt 4,前后端重新"合"在了一个项目里。
对,你没看错,是"合回来"。
2019 年,我为什么搭这个博客
时间拨回 2019 年。那会儿我正处在职业生涯里一次重大的转弯:从产品经理转行做开发。这个博客就是那个时期的产物。
做它的初衷很朴素:转行学东西,学到的东西得有个地方记,方便未来的我回头翻;同时,写下来的东西别人也能看,别人想了解我的时候,翻一翻这个站,就知道我是做什么的、会什么、在想什么。
所以它从第一行代码开始,就承担着两个角色:我的学习笔记本,和我的个人名片。
一部小型架构演进史
回头看,这个博客走了一条挺经典的路:
第一版:纯 PHP 单体。 2019 年刚学开发那会儿,就是一个完整的 PHP 项目,一个项目包揽页面渲染、接口、数据库操作,简单粗暴,跑得也挺好——毕竟那是转行初期,能跑起来就是胜利。
第二版:前后端分离。 后来觉得应该"跟上时代",把它改成了 ThinkPHP 6 出接口 + Vue 2 做两个单页应用(前台一个、后台一个)的分离架构。那几年前后端分离是标配,谁的项目不分个离,都不好意思说自己在做现代 Web 开发。
第三版:又合回去了。 这次重构选了 Nuxt 4——服务端渲染的 Vue 全栈框架,页面渲染和接口又回到了同一个项目里。
从合到分,再从分到合,绕了一圈,看起来回到了原点。当然也不完全是原点:技术栈从 PHP 换成了 Node,渲染方式从"服务端渲染"出发,绕道"客户端渲染",最后又回到了"服务端渲染"。就像时尚是个轮回,架构也是个轮回。
为什么要合回去?
第一个原因:SEO,这是最现实的。 分离版的博客是纯客户端渲染,路由还是 hash 模式(/#/xxx),对搜索引擎来说整个博客就是一张白纸——90 多篇文章,没有一条能被正常抓取的 URL。我自己写的东西,搜索引擎都搜不到,那"名片"就等于印了没发出去。重构之后,所有页面服务端直接出 HTML,分页、分类、详情页都是真链接,理论上每一篇文章都能被搜到了。
第二个原因:太复杂了。 前后端分离有它的价值,但那是给多人协作、多端复用准备的。一个人写的博客,前台后台各一个前端项目,部署要照顾两套东西,改一个字段要跨三个项目——分离带来的管理成本,早就超过了它带来的收益。合到一个项目之后,一个仓库、一次构建、一个部署,轻松多了。
又开始折腾博客了
说实话,这几年这个博客基本处于半弃用状态,一年也没几篇更新。
但这次把它翻出来重写,我自己心里其实很清楚这意味着什么——上一次这么认真地搭博客,是 2019 年,我从产品经理转行做开发的时候。
这一次,我又要重新开始了:把自己当成一个小白,从零重新学东西。所有接下来要做的事,都将以这个时刻为一个新的起点。
有意思的是,博客的架构绕了一圈,回到了"服务端渲染"这个原点;而我自己,也绕了一圈,回到了"重新开始学"这个起点。一个回到原点,一个回到起点,说不清到底是谁在像谁。
好像每当我走到新的起点,做的第一件事就是把博客折腾一遍:把学习的据点重新修好,把笔记本的封面擦干净,然后开始往里记新的东西。
这个规律连我自己都觉得奇妙。它可能说明,对我而言,"开始学点什么"和"把学到的东西写下来给别人看",从来就是一件事的两面——一个是输入的开始,一个是输出的准备。
所以,接下来这里会热闹起来:学习过程中的思考、踩坑的记录、一些想法和笔记,都会往这里放。好记性不如烂笔头,写下来的东西,才方便未来的我回头看,也方便此刻的你了解我。
最后说说架构这件事。这次重构让我想明白了一点:没有先进的架构,只有合适的架构。 项目规模决定架构,而不是流行程度决定架构。当年那个纯 PHP 单体,其实一点都不丢人——它是一个刚转行的人,用当时会的技术,认认真真搭起来的第一个作品。
还没有评论,来说两句吧
