Decompose عبارة عن مكتبة Kotlin Multiplatform لتقسيم التعليمات البرمجية الخاصة بك إلى مكونات منطق أعمال مبنية على أساس شجرة ومدركة لدورة الحياة (المعروفة أيضًا باسم BLoC)، مع وظيفة التوجيه وواجهة مستخدم قابلة للتوصيل (Jetpack/Multiplatform Compose، وAndroid Views، وSwiftUI، وKotlin/React، وما إلى ذلك) .
يرجى الاطلاع على موقع المشروع للحصول على الوثائق وواجهات برمجة التطبيقات.
إذا كان لديك أي أسئلة أو أفكار - هناك قسم المناقشات. مرحبًا بكم أيضًا في قناة Kotlin Slack - #decompose!
⚡⚡⚡ أين كل النجوم والقضايا والمناقشات وطلبات السحب وما إلى ذلك؟
بعد أن قضيت 5 سنوات في العمل على مجموعة متنوعة من المشاريع لـ Badoo/Bumble، أنا الآن في مغامرة أخرى. وكجزء من هذا الانتقال، طُلب مني نقل هذا المستودع إلى حساب Badoo GitHub.
والآن أواصل عملي في هذا المشروع كنسخة .
يجب ألا تكون هناك تغييرات عاجلة تتعلق بهذا النقل. لا ينبغي كسر معظم الروابط الخارجية. رابط المستودع هو نفسه أيضًا: arkivanov/Decompose. يرجى تقديم مشكلة في هذا المستودع، إذا كنت تعتقد أن هناك شيئًا معطلاً أو لا يعمل بشكل صحيح.
إليك ما يتأثر في الغالب بالنقل:
تم نقل جميع النجوم
كما تم نقل جميع القضايا والمناقشات. سأبذل قصارى جهدي لملء الفجوة هنا.
لقد اختفت أيضًا جميع طلبات السحب التي تحتوي على سجل التعليقات بالكامل.
سأواصل بذل قصارى جهدي لهذا المشروع وللمجتمع! العمل كالمعتاد!
موارد إضافية:
موضوع عن أخبار الهاكر
لماذا تتحلل؟
يقوم التحلل بتقسيم الكود إلى مكونات صغيرة ومستقلة وينظمها في أشجار. كل مكون أصلي يدرك فقط أبنائه المباشرين.
يرسم التحلل حدودًا واضحة بين واجهة المستخدم والتعليمات البرمجية التي لا تتعلق بواجهة المستخدم، مما يوفر المزايا التالية:
الفصل الأفضل بين الاهتمامات
واجهة مستخدم خاصة بالمنصة قابلة للتوصيل (Compose وSwiftUI وKotlin/React وما إلى ذلك)
كود منطق الأعمال قابل للاختبار من خلال اختبارات وحدة متعددة المنصات
حالة التنقل مكشوفة بالكامل - قم بتوصيل أي واجهة مستخدم تريدها، أو قم بالتحريك كما تريد باستخدام واجهة برمجة التطبيقات (API) لإطار عمل واجهة المستخدم المفضلة لديك أو استخدم واجهة برمجة التطبيقات (API) المحددة مسبقًا.
يعد التنقل وظيفة خالصة من الحالة القديمة إلى الحالة الجديدة - التنقل بلا حدود.
حقن التبعية المناسب (DI) وعكس التحكم (IoC) عبر المُنشئ، بما في ذلك على سبيل المثال لا الحصر وسيطات النوع الآمن.
منطق التنقل المشترك
المكونات المدركة لدورة الحياة
لا يتم تدمير المكونات الموجودة في المكدس الخلفي، بل تستمر في العمل في الخلفية بدون واجهة المستخدم
الحفاظ على الحالة (تلقائيًا على Android، يدويًا على جميع الأهداف الأخرى عبر kotlinx-serialization )
الاحتفاظ بالمثيلات (المعروفة أيضًا باسم ViewModels) عبر تغييرات التكوين (مفيدة في الغالب في Android)
وقت ميمي!
يثبت
يرجى مراجعة قسم التثبيت في الوثائق.
المنصات المدعومة
بشكل عام، يدعم Decompose الأهداف التالية: android و jvm و ios و watchos و tvos و macos و wasmJs و js . ومع ذلك، فإن بعض الوحدات لا تدعم جميع الأهداف أو يعتمد الدعم على إصدار التحلل. يرجى الاطلاع على مستندات التثبيت للحصول على التفاصيل.
ملخص
فيما يلي بعض المفاهيم الأساسية للمكتبة، ويمكن العثور على مزيد من التفاصيل في الوثائق.
المكون - يمثل كل مكون جزءًا من المنطق مع دورة حياته الخاصة، وتكون واجهة المستخدم اختيارية ويتم توصيلها خارجيًا
ComponentContext - كل مكون له [ComponentContext] الخاص به، مما يجعل المكونات على علم بدورة حياة المكونات ويسمح بالحفاظ على الحالة، والاحتفاظ بالمثيلات (ويعرف أيضًا باسم AndroidX ViewModel ) والتعامل مع زر الرجوع
Child Stack - يتيح التنقل بين المكونات الفرعية، كما يتم دعم التنقل المتداخل أيضًا
فتحة الطفل - تسمح بمكون فرعي واحد فقط في المرة الواحدة، أو لا تسمح بأي شيء
الصفحات الفرعية - قائمة بالمكونات الفرعية مع مكون واحد محدد (على سبيل المثال، التنقل مثل جهاز النداء)
التنقل العام - يوفر طريقة لإنشاء نموذج التنقل المخصص الخاص بك، عندما لا يناسب أي من النماذج المحددة مسبقًا احتياجاتك
دورة الحياة - توفر طريقة للاستماع إلى أحداث دورة الحياة في المكونات
StateKeeper - يجعل من الممكن الحفاظ على الحالة أو البيانات في أحد المكونات عند تدميرها