维护通知
该存储库不保留。 Arkadii Ivanov继续在叉子Arkivanov/ MVIKotlin上工作。
灵感
该项目的灵感来自Badoo Mvicore图书馆。
概述
如果您有任何疑问或想法,请欢迎来到Slack频道: MVIKotlin
什么是MVI
MVI代表模型视图。这是一种利用单向数据流的架构模式。数据仅在Model和View之间循环 – 从Model到View ,从View到Model 。
什么是MVIKotlin
MVIKotlin是一个Kotlin Multiplatform框架,它提供了一种(不仅)使用MVI模式编写共享代码的方法。它还包括强大的调试工具,例如记录和时间旅行。框架的主要功能不取决于任何反应性和珊瑚色库。 Reaktive和Coroutines库的扩展名为单独的模块。
责任
MVIKotlin不会带来或执行任何特定的体系结构。它的责任可以描述如下:
- 要为
State提供单一的真实来源(未定义范围,它可以是整个应用程序,屏幕,功能或功能的一部分); - 为了提供有效更新的UI抽象(但这不是必须的,您可以使用任何想要的东西);
- 为了在输入和输出之间提供生命周期意识的连接(绑定)(同样,这在任何方面都不是必不可少的)。
其他所有内容都超出了库的范围,没有针对“屏幕”,“功能”,“模块”等的定义。另外,没有执行/暴露的特定反应框架。这具有很大的灵活性:
- 可以逐步引入MVIKotlin (例如,您可以在小功能中开始使用它,然后逐渐扩展);
- 您可以使用/实验不同的体系结构,方法和/或库进行导航,UI,模块化等;
- 使用您喜欢的任何反应性框架或根本不使用它。
您可以在样本中找到一个体系结构选项。同样,这只是一个可能的解决方案的一个示例。
设置
推荐的最低gradle版本为5.3。请先阅读有关元数据发布模式的文档。
Maven Central发表了许多模块:
-
MVIKotlin核心接口和功能(乘法图) -
MVIKotlin -main具有默认Store实现(mutiplatform)的主模块 -
MVIKotlin -logging记录功能(mutiplatform) -
MVIKotlin -timetravel时间旅行功能(mutiplatform) -
MVIKotlin -extensions-reaktivereaktive库设置的扩展(乘法图) -
MVIKotlin -extensions-coroutines为coroutines设置的扩展(乘法) -
(弃用)keepers– 为状态保存和保留对象提供StateKeeper和InstanceKeeperAPI -
rx带有RX和Coroutines上抽象的微型模块(乘法)
将所需的模块添加到模块的build.gradle文件:
implementation \" com.arkivanov. MVIKotlin :<module-name>:<version> \"
创意现场模板
为了加快新商店的创建,您可以使用以下想法实时模板。
特征
- 多平台:Android,JVM,JavaScript,IOSX64,IOSARM64,MACOSX64,Linuxx64
- 不依赖任何反应性库或coroutines
- Reaktive库的扩展
- Coroutines的扩展
- 多线程友好(如果需要的话,可在Kotlin本地冻结)
- 输入和输出之间的生命周期感知连接(BINDINS)
- 可自定义的记录仪和格式的记录功能
- 时间旅行功能:
- 所有受支持的目标的乘以
- 用于Android的插件UI
- iOS的插件UI(示例应用程序中的复制纸)
- Android的导出/导入事件
- 用于Android应用的Intellij Idea和Android Studio插件
- 用于Android,Java和本地Apple(iOS,WatchOS,TVOS,MACOS)应用的桌面客户端应用程序
文档
https://arkivanov.gith**u*b.io/mvikotlin
样本项目
示例项目是带有详细信息的待办事项列表。
- 使用Reaktive共享模块在这里
- 使用Coroutines共享模块在这里
- 在此处,示例使用Reaktive和Coroutines实现的Android应用程序,以及日志记录和时间旅行
- 示例iOS应用程序仅具有Reaktive实施,再加上日志记录和时间旅行
- 示例JavaScript应用程序具有带有Reaktive和Coroutines实现的示例,以及日志记录和时间旅行
作者
Twitter: @arkann1985
如果您喜欢这个项目,您总是可以;-)
