承續之前寫的〈在 Web 上使用 Material Design 元件〉,在撞牆一天多之後,找到原因,總算順利讓 Vuetify 動起來,不過這個強制包裹 <v-app/> 的要求,與我希望在專案漸進導入 Vue 的打算有所衝突,所以我可能會退回使用其他方案。
在這過程之中,我不免又再思考起我這個專案的初衷與基本要求:
- 我希望這個網站的內容是 SEO friendly, Web crawler friendly 的,我希望兼顧 SNS 元素,同時希望上頭的資訊不會被關在 crawler 爬不到(或很難爬到)的黑洞、黑盒子裡。
- 我希望這個網站的操作是 keyboard friendly 的,行有餘力,再追求 touchscreen friendly。
- 我希望這個網站有一定程度的資訊即時更新能力,但是這也是行有餘力再追求的 nice to have。
- 我希望這個網站的搜尋能力比 Twitter, PTT 好,這就不是 nice to have 了,而是 essential。
- 我希望這個網站的設計風格給人溫暖的感受。
基於以上種種,我今天得到的想法是,這個專案的設計應該是「與其追求前後端分離,不如單體多模」。
我指的「前後端分離」前端是那種 fat client 式的前端,地位等同於 App,也就是很簡單就可以化身為 PWA 的那種前端,而不是為了 SEO 搞的 SSR 那種夾在中間,角色尷尬的前端。看到 SSR 享受不到 token authentication 的優點,我就覺得一整個阿雜,雖然顧及了 SEO friendly,卻很難喜歡這樣在我看來疊床架屋的架構。這樣做的好處只剩下「前後端開發者各司其職」,就只是這樣而已,我覺得。
如果要這樣,不如取法 Redmine, WordPress 這些專案「單體多模」的設計,可獨立運作,也提供 API 給其他「泛前端」使用。
或許專業的前端開發者在這樣的架構下很難(用喜歡的、慣用的前端框架)做事,但是這個專案截自目前就只是我一個人的 side project,根本也不存在什麼「專業的前端開發者」與我共事,所以不用想太多,又或者,我在用「單體統包」設計的同時,也提供 API 另外搞一份前端實作,這樣追求「實用」與「練新功夫」就都顧及了。