文章内容从Sanity.io中迁移——博客的心路历程

在大约不知道多少个版本之前大约还是用 Next.js 的版本我文章的内容从local file迁移到了Sanity.io这个 CMS 上。

Sanity.io其实非常棒，但是为什么如今又迁移回来了呢，这里我想聊聊一个博客开发的心路历程

Hexo 静态站点

从搭建博客的一开始我就没有选择Wordpress这样的传统网页构建方式，一是要有服务器这挺麻烦的，还容易被攻击，二是更喜欢极客一点的方式，就选择了静态生成的博客。

其实翻看过去的文章能发现，一开始是使用Hexo的，其实这一时期还有一部分更早期的文章丢失了😥。其实Hexo作为一个静态博客程序可以说是非常完美了，基本该有的功能都有还有非常好的社区环境。

但是问题在于对于我，一个开发者来说，Hexo的架构基本由是传统的模板 + CSS+JavaScript 构成的，在我步入社会开始打工后，这样的架构就算是折腾起来学习到的也已经不是市场的需求了。开发网页从传统的模板语法 + CSS+JavaScript 逐渐被Vue,React这样的框架代替，特别是Vue这样又新又老的体验，在国内确实是非常受欢迎。

于是博客走向了以React为基础的静态生成框架搭建。至于为什么不是Vue，首先是当时基于Vue的一些博客程序实在算不上好用，而且我在工作中主要接触的就是Vue实在提不起兴趣在业余也使用Vue了

注：现在看来使用如 Nuxt.js、Vitepress 搭建博客已经非常不错了，完全可以作为一个选项

拥抱 React

了不起的盖茨比

最开始呢，是接触到了Gatsby，这也是比较老牌的一个网站开发框架了，用来开发静态的博客可以说是杀鸡用牛刀了，不过当时的源代码并没有保存下来也是比较遗憾，算是我掌握React后第一个实践的项目。

但是经过一段时间的使用我感觉Gatsby的厚重程度实在对于一个小博客是过于重了相关文章，当时是 github 仓库收到了奇奇怪怪的依赖警告，所以后面就换到了Next.js

但是使用Gatsby给我带来了一个新的知识就是Graphql，对于博客内的数据（文章之类的）全是通过Graphql的方式去查询，算是拓展了当时基本就接触过Restful,JSONrpc的视野，这部分体验还可以。

Who is Next?

兜兜转转来到了React生态的王 ——Next.js，这家伙可厉害了作为基于React的框架，也提供了SSG的能力，其实对于SSG\SSR\CSR这部分概念也是接触了Gatsby之后才了解到的。

博客也是在这个时期来到了Vercel上，之前的时间都是基于Github Page，也浅浅的试用了Github提供的Github Action来给自己的博客简单持续集成。

作为React生态圈的顶流，Next.js可以说没什么缺点，这一部分的博客源码，可以看到后期已经从本地 markdown 文件来到了Sanity.io托管内容的形式，想在使用远程内容的同时又有完整的MDX体验也是费了一部分劲。之间还有一段时间是想用Notion来做 CMS，但是效果不好就来到了Sanity.io

在这段时期，基于使用React的技能提升，也渐渐觉得React确实存在一些心智负担，还有Next.js本身架构的不合理性，基于单文件的页面系统让人逐渐混淆了 Nodejs 环境和 Web 环境，Next.js 13 带来了App Router一定程度上解决了这个问题，可喜可贺可喜可贺

于是乎后来短暂来到了vite-plugin-ssr。

天下武功唯快不破

在使用Next.js的这段时间，Vite横空出世，很馋啊，因为webpack确实是好慢，而且开发插件什么的好麻烦。于是心一狠转到了使用vite-plugin-ssr搭建博客。

说实话一开始确实感觉挺麻烦，原来一个 ssr 框架在背后默默为开发者做了辣么多。他真的我哭死

于是花了一点时间使用vite-plugin-ssr复原了Next.js的博客，其实体验也算是不错的，DX 和 UX 个人觉得都是一流，但是后面遇到了astro

宇航时代

随着前端的发展，越来越多的让人眼花缭乱的框架，remix\Qwik\astro这些带来了孤岛架构的框架据说是牛逼哄哄的。

我也随着潮流就来到了astro，其实早在astro大约还没 1.0 的时候就已经接触过了，但是最后在astro@2.0.0发布的时间节点才正式将博客迁移到astro

astro给我的感觉就是返璞归真，就和直接写HTML+CSS+JavaScript的体验很相似，很大一部分功能我都是通过写原生 JavaScript 来实现，但它带来的开发体验又是非常现代化的，基于Vite，完善的TypeScript支持，这又给我带来了又新又旧的感觉。

而且基于各个 UI 框架的集成，可以将 Vue，Solid，React 都给加上，感觉也确实挺厉害，我觉得astro对于之前使用的各个方案都可以是说薄纱，无论 DX 还是 UX 方面。

而且这段时间我也了解到了Solid并作为 UI 框架加入到了博客中，在响应式实现方面没有React那样的心智负担，而且我确实觉得编译在前端这个领域已经不可或缺了，牺牲一小部分的 DX，带来性能提升什么其实也挺好。

但我确实对memo,useCallback搞不太明白，毕竟我的工作中不太能接触React，业余学习还是选个确实没那么难的吧😥。或许该找个写 React 的公司

对于文章内容的迁移

其实还是因为远程 markdown 内容没办法有完善的 MDX 体验，或者我选择牺牲运行时 0JS，而且astro对于内容的集成确实体验好不少。

而且我基于Sanity.io的话我写文章工作流就比较复杂，而且作为极客一点的方案，基于 git 也不算很糟，接下来就让文章在push/pull跟着仓库到处走吧。

迈向 Web3

其实就在最近接触到了xLog, 作为链上博客我很推荐如果有写作需求的朋友来尝试作为自己步入 Web3 的第一款应用，特别是不太会鼓捣博客这方面的。

其实抛弃那些有关 Web 3 噶韭菜的理论，区块链技术确实是我觉得的开放自由的互联网最原始的形态，去中心化，没有审查，基于共识

虽然同样也会充斥人性带来满满的恶意，但对于想要怎么一种环境和单纯需要一个不会被审查的写作平台的人可能会有吸引力。