大约何バージョン前に、おそらく Next.js のバージョンを使用していた頃、私の記事のコンテンツはlocal fileからSanity.ioという CMS に移行しました。
実際には、Sanity.ioは非常に素晴らしいですが、なぜ今また戻ってきたのか、ここで私はブログ開発の経緯について話したいと思います。
Hexo 静的サイト#
ブログを構築する最初から、私はWordpressのような従来のウェブページ構築方法を選択しませんでした。一つはサーバーが必要で面倒だし、攻撃されやすいです。二つは、もう少しギークな方法が好きで、静的生成のブログを選びました。
実際、過去の記事を見返すと、最初はHexoを使用していましたが、実際、この時期には一部の初期の記事が失われてしまいました😥。Hexoは静的ブログプログラムとして非常に完璧で、基本的な機能はすべて備わっており、非常に良いコミュニティ環境もあります。
しかし、問題は私にとって、開発者として、Hexoのアーキテクチャが基本的には従来のテンプレート + CSS+JavaScript で構成されていることです。社会に出て仕事を始めた後、このようなアーキテクチャは市場の需要ではなくなってしまいました。ウェブページの開発は、従来のテンプレート構文 + CSS+JavaScript から徐々にVue、Reactなどのフレームワークに置き換えられています。特にVueのような新しくて古い体験は、国内では非常に人気があります。
そのため、ブログはReactを基にした静的生成フレームワークに向かいました。なぜVueではなくReactを選んだのかというと、まず当時のVueベースのいくつかのブログプログラムは実際には使い物にならず、また、私の仕事では主にVueに触れる機会があり、余暇でもVueを使うことに興味が湧かなかったからです。
注:現在では、Nuxt.js、Vitepress などを使用してブログを構築するのは非常に良い選択肢です。
React を受け入れる#
素晴らしいギャツビー#
最初に接触したのはGatsbyでした。これはかなり古いウェブサイト開発フレームワークで、静的なブログを開発するためには大げさすぎるかもしれませんが、当時のソースコードは保存されていませんでした。これは私がReactをマスターした後の最初のプロジェクトでした。
しかし、しばらく使用した後、Gatsbyの重さが小さなブログには過剰すぎると感じました関連記事。当時、GitHub リポジトリに奇妙な依存関係の警告が表示されたため、後にNext.jsに切り替えました。
しかし、Gatsbyの使用は私にGraphQLという新しい知識をもたらしました。ブログ内のデータ(記事など)はすべてGraphQLを使用してクエリする必要があり、当時は基本的にRestful、JSONrpcに触れたことがある視野を広げるものでした。この部分の体験はまあまあでした。
次は誰?#
兜兜转转来到了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 的时候就已经接触过了,但是最后在[email protected]发布的时间节点才正式将博客迁移到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 噶韭菜的理论,区块链技术确实是我觉得的开放自由的互联网最原始的形态,去中心化,没有审查,基于共识
虽然同样也会充斥人性带来满满的恶意,但对于想要怎么一种环境和单纯需要一个不会被审查的写作平台的人可能会有吸引力。