Decompose adalah pustaka Multiplatform Kotlin untuk memecah kode Anda menjadi komponen logika bisnis sadar siklus hidup terstruktur pohon (alias BLoC), dengan fungsi perutean dan UI yang dapat dicolokkan (Jetpack/Multiplatform Compose, Android Views, SwiftUI, Kotlin/React, dll.) .
Silakan lihat situs web proyek untuk dokumentasi dan API.
Jika Anda memiliki pertanyaan atau ide - ada bagian Diskusi. Selamat datang juga di saluran Kotlin Slack - #decompose!
⚡⚡⚡ Di mana semua bintang, isu, diskusi, permintaan penarikan, dll?
Setelah menghabiskan 5 tahun mengerjakan berbagai proyek untuk Badoo/Bumble, sekarang saya memulai petualangan lain. Sebagai bagian dari transisi itu saya diminta untuk mentransfer repositori ini ke akun Badoo GitHub.
Sekarang saya melanjutkan pekerjaan saya pada proyek ini sebagai salinan .
Seharusnya tidak ada perubahan yang dapat mengganggu terkait transfer ini. Sebagian besar tautan eksternal tidak boleh diputus. Tautan repositori juga sama: arkivanov/Decompose. Silakan ajukan masalah di repositori ini, jika menurut Anda ada sesuatu yang rusak atau tidak berfungsi dengan baik.
Inilah yang paling terpengaruh oleh transfer tersebut:
Semua bintang dipindahkan
Semua masalah dan diskusi dialihkan juga. Saya akan melakukan yang terbaik untuk mengisi kekosongan di sini.
Semua permintaan penarikan dengan semua riwayat komentar juga hilang.
Saya akan terus melakukan yang terbaik untuk proyek ini dan untuk komunitas! Bisnis seperti biasa!
Sumber daya tambahan:
Sebuah utas di Berita Peretas
Mengapa Terurai?
Decompose memecah kode menjadi komponen-komponen kecil dan independen dan mengaturnya menjadi pohon. Setiap komponen induk hanya mengetahui anak terdekatnya.
Decompose menarik batasan yang jelas antara kode UI dan non-UI, yang memberikan manfaat berikut:
Pemisahan kekhawatiran yang lebih baik
UI khusus platform yang dapat dicolokkan (Compose, SwiftUI, Kotlin/React, dll.)
Kode logika bisnis dapat diuji dengan pengujian unit multiplatform murni
Status navigasi terekspos sepenuhnya - pasang UI apa pun yang Anda inginkan, animasikan sesuka Anda menggunakan API kerangka UI favorit Anda, atau gunakan API yang telah ditentukan sebelumnya.
Navigasi adalah fungsi murni dari keadaan lama ke keadaan baru - bernavigasi tanpa batas.
Injeksi ketergantungan (DI) dan inversi kontrol (IoC) yang tepat melalui konstruktor, termasuk namun tidak terbatas pada argumen aman tipe.
Logika navigasi bersama
Komponen yang sadar siklus hidup
Komponen di back-stack tidak dimusnahkan, namun terus bekerja di latar belakang tanpa UI
Pelestarian status (secara otomatis di Android, secara manual pada semua target lainnya melalui kotlinx-serialization )
Mempertahankan instance (alias ViewModels) atas perubahan konfigurasi (sebagian besar berguna di Android)
Waktunya meme!
Pengaturan
Silakan periksa bagian Instalasi pada dokumentasi.
Platform yang didukung
Secara umum, Decompose mendukung target berikut: android , jvm , ios , watchos , tvos , macos , wasmJs , js . Namun, beberapa modul tidak mendukung semua target atau dukungannya bergantung pada versi Decompose. Silakan lihat dokumen Instalasi untuk detailnya.
Ringkasan
Berikut adalah beberapa konsep utama perpustakaan, detail lebih lanjut dapat ditemukan di dokumentasi.
Komponen - setiap komponen mewakili bagian logika dengan siklus hidupnya sendiri, UI bersifat opsional dan dipasang secara eksternal
ComponentContext - setiap komponen memiliki [ComponentContext] sendiri, yang membuat komponen peka terhadap siklus hidup dan memungkinkan pelestarian status, penyimpanan instance (alias AndroidX ViewModel ) dan penanganan tombol kembali
Child Slot - hanya mengizinkan satu komponen anak dalam satu waktu, atau tidak sama sekali
Halaman Anak - daftar komponen anak dengan satu komponen yang dipilih (misalnya navigasi seperti pager)
Navigasi Generik - menyediakan cara untuk membuat model navigasi kustom Anda sendiri, ketika tidak ada model yang telah ditentukan sebelumnya yang sesuai dengan kebutuhan Anda
Siklus Hidup - menyediakan cara untuk mendengarkan peristiwa siklus hidup dalam komponen
StateKeeper - memungkinkan untuk mempertahankan status atau data dalam suatu komponen ketika komponen tersebut dimusnahkan
InstanceKeeper - mempertahankan instance di komponen Anda (mirip dengan AndroidX ViewModel )
BackPressedHandler - menyediakan cara untuk menangani dan mencegat penekanan tombol kembali
Hierarki komponen
Hierarki UI yang dapat dicolokkan
Struktur komponen yang khas
Mulai cepat
Silakan merujuk ke bagian Mulai cepat pada dokumen.
Sampel
Lihat bagian Sampel pada dokumen untuk penjelasan lengkap setiap sampel.
Templat
Lihat repositori templat yang dapat digunakan untuk memulai proyek untuk Anda.
Artikel
Dekomposisi — eksperimen dengan komponen dan navigasi yang mendukung siklus hidup Kotlin Multiplatform
Aplikasi Kotlin yang sepenuhnya lintas platform (hampir)
Navigasi tiga puluh baris yang komprehensif untuk Jetpack/Multiplatform Compose - jika Anda menemukan Decompose verbose dan lebih memilih sesuatu yang dibangun di atas Compose.
Seri "Pendekatan Berbasis Komponen" oleh Artur Artikov
Bagian 1: Melawan Kompleksitas dalam Aplikasi Android
Bagian 2: Menerapkan Layar dengan Decompose Library
Pengarang
Twitter: @arkann1985
Jika Anda menyukai proyek ini, Anda selalu bisa ;-)