간단함: 프로젝트에 간단히 추가하고 바로 UI를 구축할 수 있음. 추가 도구나 코드 생성 단계가 필요 없음. Go 코드를 작성하면 자체 포함된 바이너리로 네이티브 GUI 애플리케이션 생성 가능
크로스 플랫폼: 가능한 경우 네이티브 위젯을 사용하며, 컴파일 시 실행 중인 플랫폼에 가장 적합한 백엔드를 자동으로 선택함. 현재 FLTK 기반과 Cocoa 기반의 두 가지 백엔드 구현이 제공됨
반응형: 애플리케이션 상태가 변경될 때 UI를 자동으로 업데이트함. 부작용이 없는 렌더링 함수를 제공하고 UseState 훅을 사용하여 애플리케이션 상태를 관리
광범위한 위젯 지원: Spot은 버튼, 레이블, 텍스트 입력, 슬라이더, 드롭다운 등 다양한 UI 컨트롤을 기본적으로 제공
자주 묻는 질문 (FAQs)
"반응형"이란 무엇을 의미하는가?
Spot에서 _반응형_이란 애플리케이션 상태가 변경될 때 UI가 자동으로 업데이트됨을 의미함. 이는 상태 변경 시 불변 컴포넌트 트리를 다시 빌드하여 이전 상태와 비교해 어떤 UI 컨트롤이 업데이트되어야 하는지 결정함으로써 이루어짐.
Spot이 사용하는 "네이티브 위젯"이란 무엇인가?
현재 Spot은 macOS에서 Cocoa 백엔드를 사용하고, 다른 모든 플랫폼에서는 FLTK 기반 백엔드를 사용함. 선택적으로 Mac에서도 FLTK를 사용할 수 있음. 향후 Windows에 대한 더 나은 지원이 계획되어 있음.
나만의 훅을 구현할 수 있는가?
예, React와 마찬가지로 나만의 훅을 구현할 수 있음. *spot.RenderContext를 첫 번째 인수로 받는 함수를 만들고 이를 통해 Spot 라이프사이클에 "훅"을 걸 수 있음.
커스텀 컴포넌트를 작성하는 방법은?
Spot에서 UI를 컴포넌트로 분리하는 몇 가지 방법이 있음. 주요 방법은 spot.Component 인터페이스를 구현하는 구조체를 만드는 것임. 이 인터페이스는 Render(ctx *spot.RenderContext) spot.Component라는 단일 메서드를 가지고 있음.
제공된 것과 다른 위젯 라이브러리를 사용할 수 있는가?
예, 가능함. spot.Component 인터페이스를 구현하고 네이티브 위젯을 관리하는 구조체를 만들면 됨.
Cocoa 또는 FLTK 이외의 백엔드를 사용할 수 있는가?
현재로서는 이 두 백엔드만 지원됨. 다른 백엔드를 추가하고 싶다면 PR을 제출할 수 있음.
spot/ui와 spot의 차이점은?
spot은 반응형 모델과 렌더링 기능을 제공하는 핵심 패키지임. 백엔드에 구애받지 않으며 spot.Control 인터페이스를 구현하는 모든 컨트롤 세트와 함께 사용할 수 있음.
spot/ui는 spot과 함께 사용할 수 있는 사전 빌드된 크로스 플랫폼 GUI 컨트롤 세트를 제공함.
"컴포넌트"와 "컨트롤"의 차이점은?
Spot에서 _컴포넌트_는 비즈니스 로직과 상태를 포함하는 애플리케이션의 논리적 단위임. 모든 컴포넌트는 다른 컴포넌트로 구성되며 궁극적으로 하나 이상의 "컨트롤"로 렌더링됨.
_컨트롤_은 UI 트리에 마운트되고 화면에 시각적 요소를 나타내는 특수한 종류의 컴포넌트임.