BoilerPlate란?
BoilerPlate Code란 재 사용할 수 있는 뼈대 코드로, 보일러 플레이트를 작성해 놓고, 프로젝트 신규 생성 시마다 적용하여 사용 가능하다.
폴더 구조
프로젝트를 진행하면서, 협업하기 좋은 구조를 생각하게 되었고, 경험적으로 다음과 같은 프로젝트 폴더 구조를 작성하게 되었다.
Reflex Boilerplate
┌─Reflex BoilerPlate
│ └─assets
│ ├─ imgs/ : img 파일
│ └─ css/ : css 파일
│
├──states/ : 상태 관리 앱
│ ├─base_state.py : 기본적으로 쓰이는 정적인 State에 대한 관리 (다른 State들이 상속 받아 사용)
│ ├─image_upload_state.py : 이미지 업로드에 대한 상태 관리
│ └─login_state.py : login UI에 대한 상태 관리
│
├─services/ : 비즈니스 로직
│ ├─base_service.py : base에 대한 비즈니스 로직
│ ├─image_upload_service.py : 이미지 업로드에 대한 비즈니스 로직
│ └─login_service.py : login에 대한 비즈니스 로직
│
├─ui/ : Page UI
│ ├─base_ui.py : 기본 ui
│ ├─image_upload_ui.py : 이미지 업로드에 대한 ui
│ └─login_ui.py : login에 대한 ui
│
├─reflex.db
├─rxconfig.py : config 파일
└─README.md
✓ 폴더 구조 설명
크게 state, service, ui, 기타(config.py, reflex.db) 로 나뉜어 구성된다.
👉 UI
- UI Components 집합
- UI layer는 오직 States에 만 의존한다.
👉 states :
- UI 의 컴포넌트/변수 상태 관리
- State의 함수 들은 event handler 등으로 작동하며, Service (비즈니스 로직)을 호출한다.
- Service 결과에 따른 UI 에 대한 추가 조작 수행
- 각 State는 base_state의 State를 상속받아 사용
👉 services
- 실제 긴 비즈니스 로직 구현 ex) 외부 api call
- State만을 바라보며, 사실상 State의 함수 등에 종속 된다.
'Python > UI (Reflex, Streamlit)' 카테고리의 다른 글
[Streamlit] 실행 log 남기기 (with. Dockerfile) (0) | 2024.02.01 |
---|---|
[Python UI] Reflex, Streamlit 비교 및 선택 (1) | 2023.08.05 |