Viper架構(gòu)實(shí)踐
基于Viperit寫了一個(gè)簡(jiǎn)單的新聞的demo
XCViperitDemo
Xnip2019-10-17_15-08-55.jpg
Viper架構(gòu)圖
image
1865432-580872920986b640.png
VIPER的主要部分
簡(jiǎn)介
- View: (視圖): 顯示Presenter告知的內(nèi)容,并將用戶輸入中繼回Presenter耻煤。
- Interactor: (交互器):包含用例指定的業(yè)務(wù)邏輯本今。
- Presenter: (表示層校镐,也可稱主持人):包含用于準(zhǔn)備顯示內(nèi)容(如從Interactor接收的)和用于對(duì)用戶輸入做出反應(yīng)(通過從Interactor請(qǐng)求新數(shù)據(jù))的視圖邏輯畅涂。
- Entity: (實(shí)體):包含Interactor使用的基本模型對(duì)象香到。
- Routing: (路由):包含用于描述按哪個(gè)順序顯示哪些屏幕的導(dǎo)航邏輯娘荡。
這種分離也符合單一責(zé)任原則。
Interactor負(fù)責(zé)業(yè)務(wù)分析師
Presenter代表交互設(shè)計(jì)師
View負(fù)責(zé)視覺設(shè)計(jì)師
相比MVX
相比之前的MVX架構(gòu)魁袜,VIPER多出了兩個(gè)東西:Interactor(交互器)和Router(路由)。
各部分職責(zé)如下:
- View
提供完整的視圖敦第,負(fù)責(zé)視圖的組合峰弹、布局、更新
向Presenter提供更新視圖的接口
將View相關(guān)的事件發(fā)送給Presenter
- Presenter
接收并處理來(lái)自View的事件
向Interactor請(qǐng)求調(diào)用業(yè)務(wù)邏輯
向Interactor提供View中的數(shù)據(jù)
接收并處理來(lái)自Interactor的數(shù)據(jù)回調(diào)事件
通知View進(jìn)行更新操作
通過Router跳轉(zhuǎn)到其他View
- Router
提供View之間的跳轉(zhuǎn)功能芜果,減少了模塊間的耦合
初始化VIPER的各個(gè)模塊
- Interactor
維護(hù)主要的業(yè)務(wù)邏輯功能鞠呈,向Presenter提供現(xiàn)有的業(yè)務(wù)用例
維護(hù)、獲取右钾、更新Entity
當(dāng)有業(yè)務(wù)相關(guān)的事件發(fā)生時(shí)蚁吝,處理事件,并通知Presenter
- Entity
和Model一樣的數(shù)據(jù)模型
Viper模版代碼生成工具
推薦兩個(gè)模版
Viperit
- 支持Swift舀射、SwiftUI
- 可創(chuàng)建viper架構(gòu)模版
Generamba
- 支持OC和Swift
- 可以創(chuàng)建mvvm窘茁、viper模版
了解模版語(yǔ)言Liquid
github源碼:liquid
Liquid 模板語(yǔ)言中文文檔
Liquid 是一門開源的模板語(yǔ)言,由 Shopify 創(chuàng)造并用 Ruby 實(shí)現(xiàn)脆烟。它是 Shopify 主題的骨骼山林,并且被用于加載店鋪系統(tǒng)的動(dòng)態(tài)內(nèi)容。
從 2006 年起邢羔,Liquid 就被 Shopify 所使用驼抹,現(xiàn)在更是被大量 web 應(yīng)用所使用