基礎建設

在著手開發以前,我基於手裡擁有的先備條件做了幾項架構性的決定。

使用 Design System 管理佈景主題

#

任職於前公司時,我曾開發過一套 Design System,名為 ,雖然它不是百分之百完美的實作,但是視覺上是中文友善的獨立的系統,不會有像是 Bootstrap 等拉丁語系框架套在方塊字上面的違和感,再從可用性來說,Essence 已經使用在兩款產品上,算是經得起考驗;對於整個系統的作者我來說,開發介面肯定也是最熟悉不過了。因此無論從視覺角度、串接成本角度、開發時程角度來說,在我的部落格套用 Essence 無疑是最好的選擇。

使用 Multi-Workspace Monorepo 管理程式碼

#

身為一個獨立開發者,我不需要與其他人協作,因此 Source Code 的管理上採用 Monorepo 的策略,可以藉此降低我的管理成本。由於我使用的技術棧是 JavaScript 生態圈,因此通常會搭配 Multi-workspace 來區隔不同子專案的職責,但又能達到共享程式碼的好處。如果考慮到未來我不止有部落格專案,可能會有各式各樣想要嘗試的題目,那麼 Multi-workspace 也可以讓我降低新建專案的成本。

我的檔案架構如下:

project_root/
- README.md
- package.json
- packages/
- utils/ <------------ 所有專案共享的模組
- package.json
- ...
- essence/ <---------- 佈景主題
- package.json
- ...
- personal-blog/ <---- 部落格專案
- package.json
- ...
- future-project/ <--- 未來的新專案
- package.json
- ...

React.js & Next.js

#

技術棧的挑選純粹是基於個人熟悉程度以及市場主流工具,因此使用 React.js 搭配 Next.js 框架。

靜態網站生成 (SSG, Static Site Generation)

#

我的每一篇文章都是一個 檔案,並且儲存於 Source Code 的檔案裡,這代表我不需要依賴外部的資料庫,不需要動態產生網站頁面,只需要在建置階段產生所有網站內容就能部署了。這麼做帶來了幾個好處:

  • 省去伺服器成本
  • 只需要 Host 靜態檔案,因此有很多免費 Hosting 服務可以選擇
  • 網站內容已經預產好,因此載入速度可以很快,也支援 SEO
  • 如果 Online Build 的免費額度耗盡了,可以切換成 Offline Build