在著手開發以前,我基於手裡擁有的先備條件做了幾項架構性的決定。
任職於前公司時,我曾開發過一套 Design System,名為 ,雖然它不是百分之百完美的實作,但是視覺上是中文友善的獨立的系統,不會有像是 Bootstrap 等拉丁語系框架套在方塊字上面的違和感,再從可用性來說,Essence 已經使用在兩款產品上,算是經得起考驗;對於整個系統的作者我來說,開發介面肯定也是最熟悉不過了。因此無論從視覺角度、串接成本角度、開發時程角度來說,在我的部落格套用 Essence 無疑是最好的選擇。
身為一個獨立開發者,我不需要與其他人協作,因此 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 框架。
我的每一篇文章都是一個 檔案,並且儲存於 Source Code 的檔案裡,這代表我不需要依賴外部的資料庫,不需要動態產生網站頁面,只需要在建置階段產生所有網站內容就能部署了。這麼做帶來了幾個好處:
基礎建設
基礎建設