Decompose는 라우팅 기능과 플러그형 UI(Jetpack/Multiplatform Compose, Android Views, SwiftUI, Kotlin/React 등)를 사용하여 코드를 트리 구조의 수명 주기 인식 비즈니스 논리 구성 요소(BLoC라고도 함)로 분할하기 위한 Kotlin 다중 플랫폼 라이브러리입니다. .
5년 동안 Badoo/Bumble을 위한 다양한 프로젝트에 참여해 온 저는 이제 또 다른 모험을 떠나게 되었습니다. 전환의 일환으로 이 저장소를 Badoo GitHub 계정으로 이전하라는 요청을 받았습니다.
이제 나는 이 프로젝트에 대한 작업을복사본으로 계속합니다.
이 전송과 관련된 주요 변경 사항이 없어야 합니다. 대부분의 외부 링크는 끊어져서는 안 됩니다. 저장소 링크도 동일합니다: arkivanov/Decompose. 문제가 있거나 제대로 작동하지 않는다고 생각되면 이 저장소에 문제를 제출하세요.
전송으로 인해 주로 영향을 받는 부분은 다음과 같습니다.
모든 별이 옮겨졌습니다.
모든 문제와 토론도 이전되었습니다. 저는 이곳의 공백을 메우기 위해 최선을 다하겠습니다.
모든 댓글 기록이 포함된 풀 요청도 모두 사라졌습니다.
저는 이 프로젝트와 지역사회를 위해 계속해서 최선을 다하겠습니다! 평소대로 영업하세요!
추가 리소스:
Hacker News의 스레드
분해하는 이유는 무엇입니까?
분해는 코드를 작고 독립적인 구성 요소로 나누고 이를 트리로 구성합니다. 각 상위 구성 요소는 직계 하위 구성 요소만 인식합니다.
Decompose는 UI 코드와 비UI 코드 사이에 명확한 경계를 그려 다음과 같은 이점을 제공합니다.
더 나은 관심사 분리
플러그형 플랫폼별 UI(Compose, SwiftUI, Kotlin/React 등)
비즈니스 로직 코드는 순수 멀티플랫폼 단위 테스트로 테스트 가능합니다.
탐색 상태가 완전히 노출됩니다. 원하는 UI를 연결하고, 선호하는 UI 프레임워크의 API를 사용하여 원하는 대로 애니메이션을 적용하거나 사전 정의된 API를 사용하세요.
탐색은 이전 상태에서 새 상태로 이동하는 순수한 기능입니다. 즉, 제한 없이 탐색할 수 있습니다.
유형이 안전한 인수를 포함하되 이에 국한되지 않는 생성자를 통한 적절한 DI(종속성 주입) 및 IoC(제어 반전).
공유 탐색 논리
수명주기 인식 구성 요소
백 스택의 구성 요소는 삭제되지 않으며 UI 없이 백그라운드에서 계속 작동합니다.
상태 보존(Android에서는 자동으로, 다른 모든 대상에서는 kotlinx-serialization 통해 수동으로)
구성 변경에 따른 인스턴스 유지(ViewModel이라고도 함)(주로 Android에서 유용함)
밈 시간!
설정
설명서의 설치 섹션을 확인하세요.
지원되는 플랫폼
일반적으로 Decompose는 android , jvm , ios , watchos , tvos , macos , wasmJs , js 대상을 지원합니다. 그러나 일부 모듈은 모든 대상을 지원하지 않거나 지원이 Decompose 버전에 따라 다릅니다. 자세한 내용은 설치 문서를 참조하세요.
개요
다음은 라이브러리의 몇 가지 주요 개념입니다. 자세한 내용은 설명서에서 확인할 수 있습니다.
구성 요소 - 모든 구성 요소는 자체 수명 주기가 있는 논리 조각을 나타내며 UI는 선택 사항이며 외부에 연결됩니다.
ComponentContext - 모든 구성 요소에는 구성 요소 수명 주기를 인식하고 상태 보존, 인스턴스 유지(AndroidX ViewModel 이라고도 함) 및 뒤로 버튼 처리를 허용하는 자체 [ComponentContext]가 있습니다.
하위 스택 - 하위 구성 요소 간 탐색이 가능하며 중첩 탐색도 지원됩니다.
하위 슬롯 - 한 번에 하나의 하위 구성요소만 허용하거나 전혀 허용하지 않습니다.
하위 페이지 - 하나의 선택된 구성 요소가 있는 하위 구성 요소 목록(예: 호출기와 같은 탐색)
일반 탐색 - 사전 정의된 모델 중 요구 사항에 맞는 모델이 없을 때 사용자 정의 탐색 모델을 생성하는 방법을 제공합니다.
라이프사이클 - 구성요소의 라이프사이클 이벤트를 수신하는 방법을 제공합니다.
StateKeeper - 구성 요소가 파괴될 때 구성 요소의 상태나 데이터를 보존할 수 있습니다.
InstanceKeeper - 구성 요소의 인스턴스를 유지합니다( AndroidX ViewModel 과 유사).
BackPressedHandler - 뒤로 버튼 누르기를 처리하고 가로채는 방법을 제공합니다.
구성 요소 계층 구조
플러그형 UI 계층 구조
일반적인 구성 요소 구조
빠른 시작
문서의 빠른 시작 섹션을 참조하세요.
샘플
각 샘플에 대한 전체 설명은 문서의 샘플 섹션을 확인하세요.
주형
프로젝트를 시작하는 데 사용할 수 있는 템플릿 저장소를 확인하세요.
조항
분해 — Kotlin Multiplatform 수명 주기 인식 구성 요소 및 탐색 실험
완전한 크로스 플랫폼 Kotlin 애플리케이션(거의)
Jetpack/Multiplatform Compose를 위한 포괄적인 30줄 탐색 - Decompose가 장황하고 Compose를 기반으로 구축된 것을 선호하는 경우.