专栏名称: 移动开发前线
专注于分享移动开发前沿和一线技术。
目录
相关文章推荐
光伏资讯  ·  收购时机在哪? ·  2 天前  
光伏资讯  ·  收购时机在哪? ·  2 天前  
前端早读课  ·  【早阅】浏览器扩展程序攻击 ·  5 天前  
格斗迷  ·  张伟丽最新对手!干掉过3个UFC冠军 ·  6 天前  
格斗迷  ·  张伟丽最新对手!干掉过3个UFC冠军 ·  6 天前  
前端早读课  ·  【第3429期】css-doodle 介绍 ·  6 天前  
51好读  ›  专栏  ›  移动开发前线

ReactorKit:iOS单向数据流架构

移动开发前线  · 公众号  · 前端  · 2017-05-11 20:23

正文

版权声明
作者:谢丽
本文为 InfoQ 原创首发,未经允许禁止转载。

ReactorKit 是一个面向响应式单向 Swift 应用程序架构的框架,结合了 Flux 和响应式编程。其中,Flux 是 Facebook 用来构建客户端 Web 应用程序的应用架构。它借助单向数据流完善了 React 的可组合视图组件。它更多的是一种模式,而不是一种传统的框架。

ReactorKit Github 地址:

https://github.com/ReactorKit/ReactorKit

ReactorKit 的作者是韩国 iOS 开发者 Suyeol Jeon,他还开发了受欢迎的 Swift 语法糖 Then:

https://github.com/devxoul/Then

ReactorKit 使用 Swift 3 编写,基于 RxSwift 之上开发,也是 RxSwift 生态的一部分,你可以到 RxSwift 的 Slack 里参与 ReactorKit 的讨论。

在 ReactorKit 框架中,用户动作和视图状态都是通过可观测的流传递给每一层。这些流是单向的,因此,视图只能发出动作,而响应者只能发出状态,如下图所示:

按照设计,ReactorKit 旨在实现以下三个目标:

  • 可测试性:ReactorKit 的第一个目标是将业务逻辑从视图分离,响应者不依赖于任何视图,可单独测试;

  • 从小做起:ReactorKit 不要求整个应用程序遵循统一的架构,开发人员可以只在一个具体的视图中使用它,在已有的项目中使用 ReactorKit 也无需重写任何东西;

  • 减少输入:对于简单的东西,ReactorKit 注重避免复杂的代码,与其他架构相比,它需要的代码更少。

ReactorKit 主要包含以下三个层次:

  • 视图:视图展示数据。一个视图控制器和一个单元格被视为一个视图。视图将用户输入绑定到动作流,将视图状态绑定到每个 UI 组件。视图层不包含业务逻辑。视图只负责定义如何映射动作流和状态流。

  • 响应者:响应者是一个独立的层,负责管理视图状态。响应者最重要的作用是从视图分离出控制流。每个视图都有相应的响应者,并将逻辑处理委托给响应者。响应者不依赖视图,很容易测试。

  • 服务:ReactorKit 有一个特殊的、称为服务的层。服务层实现具体的业务逻辑。响应者介于视图和服务之间,管理事件流。当响应者收到来自视图的用户动作,它就会调用服务逻辑。服务会发送一个网络请求,并将响应返回给响应者。然后,响应者会使用服务响应创建一个变种流。

此外,一个响应者可以和多个服务通信。ServiceProvider 为响应者提供了到每个服务的引用。服务提供者在整个应用程序生命 ZZ 周期内只创建一次,并传递给第一个响应者。第一个响应者将同一个服务提供者实例的引用传递给子响应者。

ReactorKit 的 GitHub 页面上列出了以下几个示例:

  • Counter:最简单、最基本的 ReactorKit 示例;

  • RxTodo: 使用 ReactorKit 的 iOS Todo 应用;

  • Cleverbot: 使用 Cleverbot 和 ReactorKit 的 iOS Messaging 应用;

  • Drrrible: 使用 ReactorKit 的 Dribbble for iOS(已上架 App Store)。

延伸阅读

ReactorKit 作者并未详细解释 iOS 中如何实现 Flux 架构,之前国外 PlanGrid 将它的 iOS App 从 MVC 转向 Flux,并写了一篇详细的分享,你可以阅读这篇文章的译文详细了解:

iOS 开发中的 Flux 架构模式

https://github.com/yifili09/gold-miner/blob/master/TODO/real-world-flux-ios.md

活动推荐:

由InfoQ主办的第二届GMTC全球移动技术大会即将来袭!大会将于6月9-10日在北京举行。本届大会,我们将探讨智能时代的大前端,2017年都有哪些值得关注的大前端趋势和实践?扫描二维码或点击阅读原文进入大会官网,现在报名享8折优惠!

推荐文章
光伏资讯  ·  收购时机在哪?
2 天前
光伏资讯  ·  收购时机在哪?
2 天前
前端早读课  ·  【早阅】浏览器扩展程序攻击
5 天前
前端早读课  ·  【第3429期】css-doodle 介绍
6 天前
下厨房  ·  7个经典硬菜,下周晚餐从里挑
8 年前
遇见漫画  ·  女生不回微信时在想什么?
7 年前