sebaslogen/resaca
说明与用途
**项目简介** sebaslogen/resaca 是一个基于 Jetpack Compose Multiplatform 的库,能够在 Composable 范围内为 ViewModel 提供作用域,并在配置变化(如屏幕旋转)和页面导航时保持实例不被销毁。
**价值**
- **持久化与状态管理**:自动把 ViewModel 与 Composable 绑定,避免手动编写跨页面、跨配置的状态保存代码。
- **提升开发效率**:省去大量自定义 plumbing,让团队可以更专注于业务逻辑和 UI 实现。
- **跨平台支持**:同一套代码可在 Android、Desktop、Web(via Kotlin/JS)等平台使用,降低多平台维护成本。
**典型接入方式**
- **在项目中添加依赖**(示例 Gradle Kotlin DSL):
dependencies {
implementation("io.github.sebaslogen:resaca:<latest-version>")
}- **在根 Composable 中声明作用域**:
@Composable
fun MyApp() {
ResacaScope {
// 这里的所有子 composable 都可以通过 rememberResacaViewModel() 获取同一个 ViewModel 实例
HomeScreen()
}
}- **获取 ViewModel**:
@Composable
fun HomeScreen(viewModel: MyViewModel = rememberResacaViewModel()) {
// 使用 viewModel 正常工作,配置变化或导航后仍保持同一实例
}- **可选**:在需要持久化的 ViewModel 中使用
SavedStateHandle或自行实现ResacaPersistable接口,以实现更细粒度的状态保存。
**生产可用性**
- **成熟度**:已有 636 ⭐、16 🍴,最近一次提交在 2026‑05‑12,活跃度尚可。
- **适用场景**:非常适合内部工具、原型以及需要快速交付的多平台项目;在对稳定性要求极高的核心业务系统中使用前,建议进行充分的集成测试。
- **风险与注意事项**:
- 文档主要集中在 README,完整的集成指南相对有限,建议先在小型 PoC 中验证配置流程。
- 依赖于 Kotlin Multiplatform 与 Compose 生态,确保项目的 Compose 版本与库兼容。
- 关注后续维护频率和社区响应,以防止出现长期未更新的情况。
**结论**:resaca 为 Compose Multiplatform 项目提供了轻量级、开箱即用的 ViewModel 作用域管理,能够显著减少状态持久化的样板代码。对原型或内部业务系统可直接投入使用;若用于生产环境,建议在正式上线前完成完整的兼容性和回归测试。
实际用途
sebaslogen/resaca helps teams persist, query, and move data with less custom plumbing.
- manage persistence
- speed up data access
- prototype database-backed apps
限制与审查说明
Medium: useful for prototypes or internal workflows, with dependency and maintenance checks before production.
- 来源: github
- 语言: Kotlin
- 记录日期: 2026-09-05T17:32:04.546Z