H5為主的Hybrid App技術方案的設想/架構優化/設計/實戰-Android
Web運營:QQ團隊除了採用動態CDN、後臺渲染等全棧手段優化體驗,也構建了圍繞速度、成功率、頁面異常等維度的監控體系來保障服務質量。
維護手機QQ中的所有H5 hybrid開發的框架,即WebView元件的技術工作。現在主流的hybrid還是H5 + native。
70%以上業務由H5開發,手機QQ Hybrid 的架構如何優化演進?- https://www.iamue.com/19437
hybrid app開發實戰- http://blog.csdn.net/atgwwx/article/details/42693379
設想:
主要思路
- APP以H5實現為主,而不是僅限於活動頁面
- 不使用比較流行的SPA(single page application)方式
- 每個介面對應一個H5頁面,等效Activity/ViewController+佈局的職能
- 每個介面(包括原生的)都有一個唯一的URL,通過url跳轉
- 模板在App渲染,前後端分離將在APP而不是服務端,APP更具動態性
- 預置資源,使載入過程更快
APP將會分為以下三個層次:
- 容器:以原生方式提供H5尚不支援或者支援得不好的功能(比如視訊和音訊播放),管理頁面切換,與伺服器的資料互動,頁面渲染,預置資源,快取策略等。容器應該模組化,構建時可插拔
- H5框架:輕量的H5框架,再加一些支援APP通用功能(比如動畫效果,手勢互動,通用的ui元件等)
- H5業務層:所有的業務邏輯分在不同的頁面實現
其中前兩個層次可以形成框架,造福人類。在同一領域下,第三層次也可以抽象出有共享的元件或庫
優點:
相對於原生應用,
- APP更加動態化,可以減少APP升級,只有容器改動,才需要使用者升級。頁面變化,無需升級
- 跨平臺,iOS和Android公用一套頁面(未來可能還有PC,Widows Phone一類)
- 減少技術需求,前端可以很快上手
相對於SPA
- 各個頁面之間相互更獨立,避免所有js程式碼在一個上下文裡執行,可以不要過重的UI框架,單個頁面的問題不會干擾其他頁面,也不需要過分複雜的dom結構
- 和原生APP的玩法不衝突,可以互為補充。比如APP可以部分頁面是原生,部分是H5(當然儘量多用H5實現)。
問題
除錯比純原生應用困難一些。但如果單純在模擬器上除錯H5,用Safari和Chrome遠端除錯都比Native應用除錯靈活。
體驗比原生APP還有差距,主要表現在操作響應時間,動畫效果等方面。但大多數情況下和原生APP相比,已經感受不到差距了。
安全性方面還需要研究方案; 過多頁面並存的時候,記憶體消耗大.
WebAPP和原生APP同為移動端,很少有研究這兩項的互動區別,最近公司做了一次從原生APP到WebAPP(HTML5 )的移植,故總結一下期間遇到的問題及不同點總結。
(作者注:本文WAP經指正意為 webAPP ,many thx~)
從使用場景上,WAP使用者面臨比APP使用者更嚴峻的問題:
1、頁面跳轉更加費力,不穩定感更強
思考點:如何減少跳轉(扁平結構、頁面佈局技巧),增加資料及展示的流暢流程及穩定性(技術)
2、更小的頁面空間(由於瀏覽器的導航本身佔用一部分螢幕空間),更大的資訊記憶負擔
移動裝置的螢幕要小得多。這種如同透過門縫進行的閱讀增加了認知的負擔。人腦的短期記憶是不穩定的,使用者在滾動螢幕的過程中需要臨時記憶的資訊越多,他們的表現就會越差。
——《貼心設計:打造高可用性的移動產品》
思考點:排版更清晰、資訊更簡練 (可在APP基礎上去掉一些豐富、複雜的視覺表現)
3、導航不明顯,原有底部導航消失,有效的導航遇到挑戰
思考點:如何有效的提供導航?有哪些形式?
4、互動動態效果收到限制,影響一些頁面場景、邏輯的理解。
思考點:比如登入註冊流程的彈出、完成及異常退出,做好文字提示。
針對以上困境,解決方法總結如下。
首先,從APP到WAP版,在產品上,最明顯且核心的:
1、精簡功能,只將核心的任務實現,非核心的枝節可考慮刪減。
2、做好新的WAP導航.
3、補充從WAP站對 下載APP 的引導。
> WAP導航怎樣設計?
一、常見的幾種WAP導航樣式
1.1頂部底部導航的設計:
常見WAP導航設計
1.2導航快捷鍵設計:
美團:頂部欄固定位置
淘寶:懸浮圓圈–可展開的按鈕
優酷:非首屏時頁面右側懸浮
導航快捷方式
二、有效的導航設計
1、基本的快捷導航中包括 返回常用頁面(如 首頁 我的 等)的快捷方式
2、出現深層架構時 及時補充返回重要層級頁面的快捷方式
3、情境式導航,方便使用者快捷跳轉到ta想去的頁面,如購買結束時提供檢視訂單詳情的按鈕。
ps:WAP頁更加需要畫頁面跳轉的流程圖,摸清各個頁面的入口,尤其是頁面返回的流程;有些簡化的返回按鈕,可以特殊註明返回到的頁面
> 怎樣引導使用者下載APP?
一、在哪裡出現引導?
一般 首頁、核心任務的頁面(如 電商WAP的商品詳情頁 、視訊WAP的視訊觀看頁)
二、引導下載APP有哪些形式?
1、頁面頂部放置下載條 2、頁面底部懸浮層引導 3、融合在頁面首屏中
4、下載按鈕形式 5、底部foot裡含: 客戶端下載入口
下載APP引導
其次,在設計WAP版上,有以下小技巧可以參考:
1、從頁面佈局上減少跳轉:使用互動技巧隱藏文字(eg 騰訊視訊)
利用展開收起按鈕 減少頁面跳轉
2、取消float浮層,增大展示空間(eg:大眾點評)
取消float浮層,同時在詳情尾部再次加上 “購買”按鈕
浮層的轉換處理
3、頁面中對圖片進行縮小(因情況而異)的處理、精簡一些標籤導航的視覺展現
視覺微調
技術上注意點:
1)各手機瀏覽器的相容測試
2)底層服務的調取(能調取,但只有當其是核心功能時才保留 eg:新浪、美團等皆去掉了頭像上傳功能)
3)注意離線資料儲存,減少資料請求頻率。
4)考慮儲存使用者的哪些資料:設定、個人資料、閱讀錨點、跳出頁面等。
5)避免動效與瀏覽器的互動衝突
6)按順序 非同步載入 eg: 騰訊視訊
騰訊視訊 非同步載入。
相關文章
- 探探的IM長連線技術實踐:技術選型、架構設計、效能優化架構優化
- Hybrid App技術解析 — 實戰篇APP
- Hybrid App技術解析 -- 實戰篇APP
- 實戰解析Android架構設計原則Android架構
- App架構設計經驗談:技術選型APP架構
- 架構實戰--軟體架構設計的過程架構
- 【架構設計的藝術】Kafka如何通過精妙的架構設計優化JVM GC問題?【石杉的架構筆記】架構Kafka優化JVMGC筆記
- 衝頂大會APP技術選型及架構設計APP架構
- 技術方案設計的方法
- CynosDB技術詳解——架構設計架構
- 【解決方案】多租戶技術架構設計入門(一)架構
- 直播CDN排程技術關鍵挑戰與架構設計架構
- 淺談Hybrid技術的設計與實現第三彈——落地篇
- 如何設計app架構?APP架構
- 《App研發錄:架構設計、Crash分析和競品技術分析》— Android書籍APP架構Android
- css和js檔案的架構設計及優化CSSJS架構優化
- grafana 的主體架構是如何設計的?Grafana架構
- App架構設計經驗談:業務層的設計APP架構
- App架構設計經驗談:展示層的設計APP架構
- 全面解密QQ紅包技術方案:架構、技術實現、移動端優化、創新玩法等解密架構優化
- 得物App H5秒開優化實戰APPH5優化
- 想成為一名優秀的架構師?從架構設計開始架構
- Java程式設計師如何成為優秀的架構師Java程式設計師架構
- 淺談Hybrid技術的設計與實現第三彈——落地篇前言
- App架構設計經驗談:資料層的設計APP架構
- 程式設計師、技術主管和架構師程式設計師架構
- iOS 元件化/模組化架構設計實踐iOS元件化架構
- 《Kafka實戰》之架構和設計邏輯Kafka架構
- App架構設計經驗談:介面”安全機制”的設計APP架構
- 技術實踐| Hybrid模式下的熱更新方案模式
- 設計「業務」與「技術」方案
- 聊聊Web App、Hybrid App與Native App的設計差異WebAPP
- 後端技術雜談8:OpenStack架構設計後端架構
- 微服務之架構技術選型與設計微服務架構
- 彈性架構設計之運維技術棧架構運維
- IT行業技術部門人員架構設計行業架構
- Kafka的生產者優秀架構設計Kafka架構
- Android 架構設計:MVC、MVP、MVVM和元件化Android架構MVCMVPMVVM元件化