Frontend Architecture
資料來源
- Rethinking React best practices @ Frontend Masters
架構要解決的是什麼問題
「在軟體工程中,常常會遇到兩種問題:技術問題(technical problems)和管理問題(personal problems)。
在思考架構(architecture)的時候,我們再談的是找到適當的規範(constraint)來解決這些問題。沒有正確地規範就會出現管理問題,隨著時間推移,複雜度和風險就會越來越高,導致越來越容易出現錯誤。同樣的,如果技術問題沒有被正確規範,當軟體的使用量增加時,用戶體驗就會越來越糟糕。因此,適當的限制有助於解決軟體工程中的問題。
這些規範和限制,最終的目的都是要幫助我們有效管理作為人本身最大的限制—有限的時間和注意力。」
前端架構的演進
從 MVC 到 SPA(CSR)
解決的問題
- 優化前端操作頁面的效能,讓使用者可以做更複雜的操作
優點
- 強調使用者能夠即時於網頁互動,在網頁上做許多複雜的操作
- 很快的 TTFB
缺點
- 使用者在開始使用 App 前常常需要較長的等待
- client 需要下載很多可能用不到的檔案
- 每次切換頁面可能都要重新等待資料讀取和載入(data fetching)
SSR
解決的問題
- 減少讓使用者下載不必要的檔案
- 讓使用者能夠儘早看到內容
優點
- 使用者可以較快看到有意義的內容
缺點
- TTI 較差,即使看到內容可能還是無法在網頁上進行互動和操作(uncanny valley)
SSR with streaming, Suspense, and Concurrent mode
解決的問題
- 使用者需要等 server 把資料都下載讀取完後,才能看到內容
- waterfall 的 data fetching
試著結合 CSR 和 SSR 的優點,並減少對應的缺點