Flask 要不要用 Blueprint:小站何時需要把路由拆開
很多人剛開始學 Flask 時,通常會把所有東西都寫在同一個 app.py 裡。這在第一個小專案完全合理,因為功能少、路由少、模板也不多,集中在一起反而最好理解。但當網站慢慢變大,很多人就會開始聽到一個名詞:Blueprint。這時候最常見的問題就是,到底什麼時候該拆? 先講結論。Blueprint 不是 Flask 一開始就一定要用的東...
很多人剛開始學 Flask 時,通常會把所有東西都寫在同一個 `app.py` 裡。這在第一個小專案完全合理,因為功能少、路由少、模板也不多,集中在一起反而最好理解。但當網站慢慢變大,很多人就會開始聽到一個名詞:Blueprint。這時候最常見的問題就是,到底什麼時候該拆?
先講結論。Blueprint 不是 Flask 一開始就一定要用的東西,它比較像是當你的網站功能越來越多時,用來整理結構的工具。如果你現在只有首頁、文章頁、登入頁、後台新增文章,全部放在一個 `app.py` 裡通常還是可以接受。但當你開始有前台文章、後台管理、API、會員、搜尋、分類等不同模組時,路由與邏輯放在同一個檔案裡就會越來越難維護。
Blueprint 的概念其實不複雜。你可以把它理解成「把一組相關路由和邏輯收進同一個模組,再註冊回主應用」。例如前台文章是一組、後台管理是一組、API 又是一組。這樣你的主程式不需要塞滿所有細節,整體會乾淨很多。
例如概念上可以這樣理解:
app.py
routes/public.py
routes/admin.py
routes/api.py這樣做的好處,不只是程式比較整齊而已。當你之後要找某類功能時,也比較知道該去哪裡改。像前台壞了就看 public,後台壞了就看 admin,API 問題就看 api。對單人維護的小站來說,這種清楚度就已經很有價值。
但 Blueprint 也不是越早拆越好。很多新手一開始網站功能還很少,就急著把專案切成很多資料夾、很多模組,最後反而搞不清楚程式是怎麼跑起來的。這時候 Blueprint 就會從整理工具變成理解障礙。
所以比較務實的判斷方式通常是這樣:
如果只有少量頁面、少量功能:先維持單檔也沒問題
如果開始有前台、後台、API、分類功能:就值得考慮 Blueprint
如果你改一個功能常常要在大檔案裡找很久:也該拆了也就是說,Blueprint 適合的是「開始變大但還不想失控」的階段,而不是一開始就一定要上。
如果你現在正在做的是小型內容站,我會建議先把功能做順,把文章、後台、SEO、部署這些基礎事情做好。等到你真的開始有比較多模組,再把前台、後台、API 用 Blueprint 拆開,通常會是更自然的節奏。