Project Icon

Decompose

Kotlin多平台组件化开发框架

Decompose是一个Kotlin多平台库,用于构建树状结构的生命周期感知组件。该库提供路由功能和可插拔UI,支持多种UI框架。Decompose实现了UI和业务逻辑的分离,提供导航状态管理、依赖注入等功能,适用于复杂的跨平台应用开发。它支持组件化开发,提高了代码的可测试性和可维护性。



许可证 Twitter链接


Decompose是一个Kotlin多平台库,用于将代码分解为树状结构的生命周期感知业务逻辑组件(又称BLoC),具有路由功能和可插拔UI(Jetpack/Multiplatform Compose、Android Views、SwiftUI、Kotlin/React等)。

请查看项目网站获取文档和API。

如果您有任何问题或想法,可以在讨论部分进行交流。也欢迎加入Kotlin Slack频道 - #decompose

⚡⚡⚡ 所有的星标、问题、讨论、拉取请求等去哪了?

在Badoo/Bumble工作了5年后,我现在开始了另一个冒险。作为过渡的一部分,我被要求将这个仓库转移到Badoo GitHub账户

现在我以副本形式继续这个项目的工作。

这次转移不应该造成任何破坏性变化。大多数外部链接应该没有失效。仓库链接也保持不变:arkivanov/Decompose。如果您认为有什么地方损坏或不正常工作,请在这个仓库中提交问题。

以下是受转移影响最大的方面:

  • 所有星标都被转移了
  • 所有问题和讨论也被转移了。我会尽最大努力填补这里的空白。
  • 所有带有评论历史的拉取请求也都消失了。

我将继续为这个项目和社区尽我所能!一切照常进行!

其他资源:

为什么选择Decompose?

  • Decompose将代码分解成小而独立的组件,并将它们组织成树状结构。每个父组件只知道其直接子组件。
  • Decompose在UI和非UI代码之间划清界限,带来以下好处:
    • 更好的关注点分离
    • 可插拔的平台特定UI(Compose、SwiftUI、Kotlin/React等)
    • 业务逻辑代码可通过纯多平台单元测试进行测试
  • 导航状态完全暴露 - 可插入任何您想要的UI,使用您喜欢的UI框架API或预定义API进行动画处理。
  • 导航是从旧状态到新状态的纯函数 - 无限制导航。
  • 通过构造函数进行适当的依赖注入(DI)和控制反转(IoC),包括但不限于类型安全参数。
  • 共享导航逻辑
  • 生命周期感知组件
  • 后台栈中的组件不会被销毁,它们在后台继续工作,无需UI
  • 状态保存(在Android上自动,在其他目标上通过kotlinx-serialization手动保存)
  • 实例保留(又称ViewModels)以应对配置更改(主要适用于Android)

表情时间!

设置

请查看文档的安装部分。

支持的平台

总的来说,Decompose支持以下目标:androidjvmioswatchostvosmacoswasmJsjs。然而,某些模块不支持所有目标,或者支持取决于Decompose的版本。详情请参阅安装文档。

概述

以下是该库的一些关键概念,更多细节可以在文档中找到。

  • 组件 - 每个组件代表一段具有自己生命周期的逻辑,UI是可选的,可从外部插入
  • ComponentContext - 每个组件都有自己的[ComponentContext],使组件具有生命周期感知能力,并允许状态保存、实例保留(类似于AndroidX的ViewModel)和返回按钮处理
  • 子堆栈 - 实现子组件之间的导航,也支持嵌套导航
  • 子槽 - 一次只允许一个子组件,或者没有
  • 子页面 - 一个子组件列表,有一个选定的组件(例如类似分页器的导航)
  • 通用导航 - 提供一种方法来创建自定义导航模型,当预定义模型都不适合您的需求时
  • 生命周期 - 提供一种方法在组件中监听生命周期事件
  • StateKeeper - 使组件在被销毁时能够保存状态或数据
  • InstanceKeeper - 在组件中保留实例(类似于AndroidX的ViewModel
  • BackPressedHandler - 提供一种方法来处理和拦截返回按钮按压

组件层次结构

可插拔UI层次结构

典型组件结构

快速开始

请参考文档的快速开始部分。

示例

查看文档的示例部分,了解每个示例的完整描述。

模板

查看模板仓库,它可以用来快速启动您的项目。

文章

作者

Twitter:@arkann1985

如果您喜欢这个项目,随时可以给我买杯咖啡 ;-)

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号