본문 바로가기

reflex6

파이썬의 리스트도 표현할 수 있나? # 투두리스트 앱 만들기 앞선 포스팅에서는 간단히 rx.heading이나 rx.text를 이용해 화면에 글자를 출력해보았으며 State라는 클래스와 클래스 변수인 Var를 이용해 동적인 웹앱, Counter를 구현해보았다. 그럼 이런 생각도 해볼 수 있을텐데? 단순한 텍스트 목록은 rx.text를 나열하면 될텐데, ["a", "b", "c"] 같은 리스트도 표현할 수 있을까? (직접 공식문서를 찾아 읽어보신 분이라면, 어렵지 않게 구현하실 것) 이 때는 우리가 사용할 또 다른 레이아웃 컴포넌트, 바로 rx.foreach가 필요하게 되는 시점이다. (굳이 비유하면 파이썬의 for문과 map 함수를 합친 느낌이다.) 참고로 rx.foreach는 단순한 파이썬의 for문과는 살짝 다르다. 무엇이 다른고 하니, rx.foreach(리스.. 2023. 10. 3.
간단한 동적 웹앱 만들어보기 : Counter 이번 포스팅에서는 아래와 같은 페이지를 만들어 보고, State의 사용법에 대해 간단히 이해해보고자 한다. 아래와 같은 코드로 index 함수를 만들었다. import reflex as rx def index(): return rx.vstack( # 행 방향으로 나열하는 레이아웃 컴포넌트 rx.heading("Counter"), # 제목 rx.hstack( # 열 방향으로 나열하는 레이아웃 컴포넌트 rx.button("-", color_scheme="red"), rx.heading("0"), rx.button("+", color_scheme="green") ) ) app = rx.App() app.add_page(index) app.compile() 참고로 위에서 사용한 vstack, hstack은 각각.. 2023. 10. 3.
reflex 웹페이지는 기본적으로 클래스 하나, 함수 하나로 구성된다. reflex는 프론트엔드와 백엔드의 구분이 다소 모호(?)한 pure-python fullstack webframework이다. reflex로 만드는 웹앱은 기본적으로 State라는 클래스 하나, 그리고 index라는 함수 하나로 구성된다. 이를 이해하기 위해서는 가장 간단한 앱 하나를 만들어보는 것이 좋다. 우선 State 없이 간단한 페이지함수인 index를 만들어보자. import reflex as rx def index(): return rx.heading("Hello world!") app = rx.App(state=State) app.add_page(index) app.compile() python 코드로 구성된 간단한 소스이지만, 이는 리플렉스를 구성하고 있는 node.js, React, N.. 2023. 10. 3.
[컴포넌트 소개] flex VS grid VS hstack #layout 지난 포스팅에서 가장 기본적인 wrapping component인 rx.box와 rx.fragment를 소개했습니다. 하지만, 기본적인 스타일(예를 들면 가운데정렬이나 컴포넌트 간격 조절 등?)만 적용하려고 해도 코드라인이 길어집니다. reflex에서는 이런 작업의 편의를 위해 rx.flex, rx.container, rx.center, rx.stack, rx.vstack, rx.hstack, rx.grid 등 다양한 컴포넌트를 다양하게 제공하고 있습니다. rx.center rx.center는 rx.box의 자식컴포넌트를 중앙으로 정렬해주고 flex-box가 적용되며, 아래의 CSS가 기본적으로 적용되어 있습니다. { display: -webkit-box; display: -webkit-flex; dis.. 2023. 9. 24.
[컴포넌트 소개] rx.box vs rx.fragment #layout rx.box는 가장 기본적인 태그와 같습니다. 특정 컴포넌트를 태그로 한 겹 감싸주는 기능 외에 아무 스타일도 적용되지 않습니다. rx.box와 거의 동일한 컴포넌트로 rx.fragment가 있습니다. rx.box와 rx.fragment의 차이는 딱 한 가지입니다. rx.box는 로 변환되어 그 안의 컴포넌트들을 한 겹 감싸주는 데 반해, rx.fragment는 (렌더링 후를 보면) 어떤 태그로도 감싸져 있지 않다는 점입니다. 그래서 rx.fragment에는 (당연히) 어떤 prop이나 이벤트 트리거도 적용되지 않습니다. rx.box의 렌더링 결과 rx.fragment의 렌더링 결과 그밖에 rx.box와 유사한 컴포넌트들 rx.box에 아주 조금씩 스타일이 추가적용된 컴포넌트들로 rx.center, rx.. 2023. 9. 24.
wsl에서 파이참 터미널 열 때 가상환경 자동 활성화하는 방법 오랜만에 포스팅을 남깁니다. 최근 reflex(구:pynecone) 관련 스터디를 하면서, 파이참 - 윈도우 터미널에서는 자동으로 가상환경이 활성화되는데 wsl 환경에서는 터미널을 열 때마다 가상환경을 직접 activate 해줘야 하는 부분이 불편했습니다. 다행히 스택오버플로와 젯브레인스 블로그 등을 참고해서 wsl터미널을 열 때마다 가상환경을 자동 활성화하는 방법을 찾아 적용하기 쉽게 정리해보았습니다. 아래 세 단계만 따라하시면 됩니다. 1. (당연하지만) 가상환경을 생성합니다. 저는 ~/.virtualenvs/venv 안에 가상환경을 만들어보았습니다. 2. ~/.pycharmrc 파일을 생성합니다. (파일명은 중요하지 않습니다.) 내용은 아래와 같이 두 줄을 입력합니다. source ~/.bashrc.. 2023. 8. 15.