Tangram
是阿里出品、用於快速實現組合佈局的框架模型,在手機天貓 Android
& iOS
版 內普遍使用Tangram
模型 進行全面介紹,但願大家會喜歡。在講解 Tangram
模型 前,咱們先來搞懂一個問題:爲何要使用 Tangram
模型算法
相應的解決方案的特色以下: 後端
Native
的方案,不做過多解釋WebView
性能的提高 和 移動端設備硬件的發展,現階段 HTML
加載速度 & 渲染速度慢的缺點將會逐漸被完善,對於臨時性業務的需求可以知足但對於常規業務,至今還沒蓋棺定論的方案,因此纔會存在兩種方案:WebView+HTML
& Dynative
方案。但這兩種方案是存在問題的:緩存
WebView+HTML
方案:隨着WebView
性能的提高 和 移動端設備硬件的發展,HTML加載速度 & 渲染速度慢的缺點將會逐漸被完善,因此常規業務須要的性能仍是難以知足。Dynative
(如RN
、Weex
):雖然性能能知足,但因爲該技術還不成熟,穩定性差,且開發難度大,因此對於常規業務仍是很是謹慎的使用。Tangram
正是解決 常規業務 的方案:在性能、穩定性 & 開發週期 取得較好平衡的一種折中方案。微信
- 所謂概念模型,即只停留在定性分析的解決方案 & 思路,還未真正具體實現
Tangram
的具體實現是一種Native
(iOS
&Android
)的快速實現 組合佈局 的界面開發框架,下面會詳細說明
就像使用七巧板 經過現有板塊 快速拼湊出 多樣的形狀同樣。架構
Tangram
模型目前已在手機天貓 & 淘寶 Android 版內普遍使用框架
在性能方面,但願 貼近Native開發,重點:頁面渲染效率 & 組件回收複用佈局
VLayout
和 LazyScroll
兩個基礎組件,經過一個雙索引可見區域組件發現算法,實現了跨父節點組件的高效回收和複用。根據 業務類型 將組件 封裝成 能承擔必定業務能力的複用單元。性能
如一種瀑布流佈局插件
提供 控制檯 讓業務方可直接控制基於Tangram的產品,如調整頁面佈局,切換頁面數據等。設計
- 即 頁面的排版佈局 可 經過後端數據的下發來動態調整
- 服務網關的建設目標是最大程度的下降業務建立Tangram頁面的壓力和成本。
但這種動態化 是 面向粗粒度組件:經過 佈局+組件的形式搭建整個頁面,而不是通常從 **基本的UI元素(如按鈕blabla)**搭建頁面。
- 其實也很好理解,業務人員須要用到的是 能承擔必定業務能力的「業務佈局」,而不是單一UI元素(按鈕、文本blabla)
- 好處:使用成本低,上線週期短
採用插件化擴展
內部原本就註冊在框架裏 & 外部也可注入擴展模塊
對於業務開發,存在多端表現不一致的問題。爲了解決該問題,之前須要經過複雜的網關邏輯來兼容多端邏輯不一致狀況。
爲了防止該問題,對於Tangram,預先制定了兩個開發原則:
Tangram
的架構主要由三部分組成:
Tangram SDK
Tangram AC
Tangram OP
每部分的具體細節以下:
本文主要講解的是用於客戶端頁面渲染的Tangram SDK
。
在講解架構前,咱們須要先了解Tangram
的一些模型知識。
一個頁面實體由3部分組成:頁面(Page)、卡片(Card) & 組件(Item)
具體以下圖:
之間的關係:組件 構成 卡片、卡片 構成 頁面。
對於Tangram
,他的頁面概念模型可用 樹狀模型(3層結構) 表示:
下面主要講解 三層結構中 的 卡片 & 組件。
- 即對組件進行 組合 & 佈局
- 只聲明佈局方式,不提供佈局細節
關於四個部分的細節,我將在Tangram具體使用時進行介紹
平常使用的普通的
View
,如按鈕、圖片等等
做用:負責UI元素展現 & 業務邏輯
組成元素:視圖模型(ViewModel
) & 樣式(Style
)
視圖模型:全部組件對有一個統一視圖模型(ViewModel
),主要是定義了生命週期事件:
init()
bind()
unbind()
關於 組件的基本樣式 主要包括:組件背景、外邊距、內邊距、組件的寬高比等等。具體細節會在具體使用時介紹。
Tangram
的結構主要由5部分組成,以下圖:
當頁面數據傳入時:
- 解析過程會根據以前註冊過的卡片、組件類型來解析
- 未定義的數據將會被拋棄
- 佈局框架 根據卡片提供的佈局信息進行佈局
- 佈局框架 根據組件提供的組件信息獲取組件實例,佈局到佈局容器裏
Tangram
的核心功能Tangram
採用 插件化形式 進行擴展:Tangram
概念模型基本架構 & 原理Android
:採用基於RecyclerView
+自定義LayoutManager
的實現方案iOS
:採用 基於自定義的 LazyScrollView
的實現方案本文主要詳細講解Tangram
的概念模型
關於具體實踐 & 落實到業務使用,請看文章:Android開源庫V - Layout:淘寶、天貓都在用的UI框架,趕忙用起來吧!
下面我將繼續對 阿里開源的框架模型Tangram
進行 跟蹤 & 詳細分析 ,有興趣能夠繼續關注Carson_Ho的安卓開發筆記