Viper架構實踐
基于Viperit寫了一個簡單的新聞的demo
XCViperitDemo

Xnip2019-10-17_15-08-55.jpg
Viper架構圖

image

1865432-580872920986b640.png
VIPER的主要部分
簡介
- View: (視圖): 顯示Presenter告知的內容,并將用戶輸入中繼回Presenter。
- Interactor: (交互器):包含用例指定的業(yè)務邏輯。
- Presenter: (表示層,也可稱主持人):包含用于準備顯示內容(如從Interactor接收的)和用于對用戶輸入做出反應(通過從Interactor請求新數(shù)據(jù))的視圖邏輯。
- Entity: (實體):包含Interactor使用的基本模型對象。
- Routing: (路由):包含用于描述按哪個順序顯示哪些屏幕的導航邏輯。
這種分離也符合單一責任原則。
Interactor負責業(yè)務分析師
Presenter代表交互設計師
View負責視覺設計師
相比MVX
相比之前的MVX架構,VIPER多出了兩個東西:Interactor(交互器)和Router(路由)。
各部分職責如下:
- View
提供完整的視圖,負責視圖的組合、布局、更新
向Presenter提供更新視圖的接口
將View相關的事件發(fā)送給Presenter
- Presenter
接收并處理來自View的事件
向Interactor請求調用業(yè)務邏輯
向Interactor提供View中的數(shù)據(jù)
接收并處理來自Interactor的數(shù)據(jù)回調事件
通知View進行更新操作
通過Router跳轉到其他View
- Router
提供View之間的跳轉功能,減少了模塊間的耦合
初始化VIPER的各個模塊
- Interactor
維護主要的業(yè)務邏輯功能,向Presenter提供現(xiàn)有的業(yè)務用例
維護、獲取、更新Entity
當有業(yè)務相關的事件發(fā)生時,處理事件,并通知Presenter
- Entity
和Model一樣的數(shù)據(jù)模型
Viper模版代碼生成工具
推薦兩個模版
Viperit
- 支持Swift、SwiftUI
- 可創(chuàng)建viper架構模版
Generamba
- 支持OC和Swift
- 可以創(chuàng)建mvvm、viper模版
了解模版語言Liquid
github源碼:liquid
Liquid 模板語言中文文檔
Liquid 是一門開源的模板語言,由 Shopify 創(chuàng)造并用 Ruby 實現(xiàn)。它是 Shopify 主題的骨骼,并且被用于加載店鋪系統(tǒng)的動態(tài)內容。
從 2006 年起,Liquid 就被 Shopify 所使用,現(xiàn)在更是被大量 web 應用所使用