標題總是要寫得很聳動,這份文案主要分享個人在系統工程師中所觀察並學到的專案結構。讓我們先看結構,再逐一討論其設計用意吧。
backend(專案名稱)/ # 涵蓋 (1) 環境 (2) 變動設定檔 (3) 專案程式
├── .venv/(venv) # 虛擬環境資料夾
├── settings/ # 依運行改變的環境變數資料夾
│ # 此資料夾含有帳號與隱私設定,在推到 Github 公開時要記得設定排除名單
│ ├── settings_127.yaml # 本地設定
│ ├── settings_dev.yaml # 開發設定
│ ├── settings_prod.yaml # 上線部屬設定
│ └── settings_test.yaml # 測試設定
├── backend/ # 專案資料夾
│ ├── .vscode/ # VSCode 設定資料夾
│ ├── app/ # 專案根目錄
│ │ ├── __init__.py # 專案程式,Apiflask (Flask) 在此完成實例
│ │ ├── blueprints/ # 藍圖資料夾
│ │ ├── common/ # 通用工具與變數資料夾
│ │ ├── models/ # 資料庫模型資料夾
│ │ ├── static/ # 靜態檔案資料夾
│ │ ├── configs.py # 專案設定檔程式,在此引入上層 settings 文件
│ │ ├── extends.py # Flask 擴充元件程式
│ │ ├── hook_units.py # 請求上下文勾子工具程式
│ ├── .flaskenv # Flask 啟動環境變數
│ ├── run.py # 啟動專案程式,依專案設定 WSGI 或 SOCKETIO
│ └── run_utils.py # 啟用專案工具程式,在此實作 terminal Log 紀錄
└── pyproject.toml # poetry 套件管理生成,涵蓋 python 版本資訊與專案套件資訊
個人開發採用 pyenv poetry 專案開發流,其中 pyenv 管理 python 版本、poetry 管理套件依賴。透過上述結構,將整個專案透過模組化設計與分離設定文件,將更容易擴展與維護。主要規劃為
- 專案程式環境設定
- 專案環境變數管理資料夾
- 專案開發資料夾