Python/UI (Reflex, Streamlit)

[Python UI] Reflex 보일러 플레이트 (Boiler Plate)

yubi5050 2023. 8. 12. 18:01

 

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의 함수 등에 종속 된다.