百度Web端的 UI 框架:BlendUI
BlendUI 是百度公司的一個 Web 前端 UI 框架。BlendUI 能讓Webapp的體驗和交互與Native媲美。
具體而言,里面包括了兩項關鍵能力:
-
多Webview控制能力。讓一個Webapp拆到多個webview中運行,并能用Javascript來調度。搞定了業務無解的難題:頁面過大導致卡頓,頁面切換不流暢,
-
Native組件嵌入能力。能將Native控件嵌入Webview中,這樣就能讓頁面中那些性能較差的部分用Native來實現,以最大化地提高體驗和交互。
與此同時,開發者看到的是Web API,不僅能快速上手,更由于BlendUI為普通瀏覽器完成了降級和替代方案,一套代碼能同時在BlendUI環境和瀏覽器中同時運行。
最后再簡單說說BlendUI的背景和目標。
在webapp和Native app之間,有一條無法逾越的鴻溝:體驗和性能的差距。輕應用是webapp的延伸,同樣存在此問題。為彌補這條鴻溝,我們要有一套方案,能讓開發者使用web API,做出體驗和性能與原生應用差距不大的應用。
經過一番調研,我們發現幾個重要的現實問題,這些問題導致了webapp和native app之間的體驗差距。
-
webapp缺少淡入淡出動畫、轉場動畫、滑動動畫,或者因此引起的不流暢,以及某些組件的彈力體驗與原生有差距等。
-
浮動元素的處理。頂部、右側、底部的固定位置的元素可能會有抖動,或者彈出菜單無法點按頁面其他位置關閉,點按不流暢等。
-
輸入框的問題。包括輸入法無法正常展開收起,框內部滾動問題。
-
本地緩存能力。包括已瀏覽的圖片本地緩存,靜態資源緩存出現臟數據等問題。
-
DOM變化后的渲染抖動。包括無限下拉時的渲染抖動,無刷新翻頁的閃爍
此外,vision mobile的調研數據顯示,開發者之所以不選用html5的前三大原因是:
-
性能問題:45.7%
-
硬件接口有限:37.3%
-
難以集成原生組件:29.2%
因此,輕組件的首要目標是:彌補輕應用的體驗劣勢,包括頁面間、頁面內的轉場動畫,浮動元素處理,一些對性能要求較高的組件原生化等。
我們將面對的用戶主要是高級web開發者。因此,庫需要有足夠的擴展性和靈活性,同時API必須是web化的。