在大約不知道多少個版本之前大約還是用 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 的時候就已經接觸過了,但是最後在[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 噶韭菜的理論,區塊鏈技術確實是我覺得的開放自由的互聯網最原始的形態,去中心化,沒有審查,基於共識
雖然同樣也會充斥人性帶來滿滿的惡意,但對於想要怎麼一種環境和單純需要一個不會被審查的寫作平台的人可能會有吸引力。