精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

詳解ROMA中復雜圖表的渲染實現

開發 前端
ROMA 對外提供echarts標簽,內部依賴提前加載了echarts.js庫的WebView,將圖表數據交給準備好環境的WebView,達到渲染圖表的目的。這里有一個重要的前提就是成功加載了echarts.js 庫的WebView才具備快速渲染各類圖表的能力。

一、背景

ROMA長期負責多種復雜圖表的渲染任務,尤其在京東金融APP中首頁首屏等關鍵位置,對渲染的及時性與穩定性有極高要求。近期業務反饋,在APP頻繁重啟的場景下,首頁圖表偶現渲染失敗的情況。為此,我們系統梳理了圖表的完整渲染流程,并對緩存策略、視圖加載與渲染鏈路進行了整體重構。在保障渲染成功率的基礎上,進一步提升了渲染速度,并新增了異常狀態下的自動重試機制。

二、使用場景分析

京東金融App內有很多使用復雜圖表的業務場景,以下截取部分場景。下圖分別是黃金歷史金價的走勢圖、用戶購買的基金的收益走勢圖、小金庫的收益柱狀圖、用戶投資診斷的雷達圖、省錢賬單和AI助手賬單趨勢柱狀圖。

圖片圖片

可見,金融App內圖表的使用具備種類豐富、數據信息量大,定制程度高、交互頻繁等特點,經調研發現,Apache ECharts是一個基于JavaScript的功能強大的開源可視化圖表庫,被廣泛應用于數據分析、監控系統、報表工具等領域。并且支持定制支持的圖表類型,可降低圖標庫的體積和提升圖標庫的加載速度。由于原生端并沒有類似的圖表庫,因次決定在ROMA中引入ECharts來承接復雜圖表的顯示需求 。

三、重構分析過程

1. 原理分析

ROMA 對外提供echarts標簽,內部依賴提前加載了echarts.js庫的WebView,將圖表數據交給準備好環境的WebView,達到渲染圖表的目的。這里有一個重要的前提就是成功加載了echarts.js 庫的WebView才具備快速渲染各類圖表的能力。并且需要提前打通ROMA與Native,Native與WebView之間的數據通訊,保證數據在三端之間的順暢流轉。

為此自定制JRTransEchartsWebView專門用于渲染echarts數據,JRTransEchartsComponent作為標簽實現在承接WebView和JUE環境的數據傳遞和業務邏輯處理。以下類圖展示了各主要類對象之間的相互關系。

圖片圖片

首先打通Native和WebView的數據交互,原生端在創建WebView的時候就向其環境中注入window的message事件監聽,攔截指定類型的事件,獲取從WebView環境中發來的數據。

NSString *jsStrring = @"window.addEventListener('message', (e) => { \
                        var customDict = {'function':'jdttransWindowEventDispatch',\ 
                                          'careParamDict':{'data': e.data, 'origin': e.origin}};\ 
                        window.webkit.messageHandlers.JDTTransEchartsHandler.postMessage(customDict);})";
NSString *jscode = [NSString stringWithFormat:jsStrring];
WKUserScript *script = [[WKUserScript alloc]initWithSource:jscode injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:YES];

Native向WebView發送數據通過evaluateJavaScript的方式,向JS環境中輸入數據:

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithDictionary:@{@"type":@"message"}]; 
[dict jdd_setObjectCheck:message forKey:@"data"]; 
[dict jdd_setObjectCheck:@"*" forKey:@"origin"]; 
NSString *dictString = [dict jdd_JSONString]; 
NSString *jsString = [NSString stringWithFormat:@"javascript:(function (){ \
                                                  var event = new MessageEvent('message', %@);\ 
                                                  window.dispatchEvent(event);})()",dictString]; 
[webView evaluateJavaScript:jsString completionHandler:nil];

JUE和Native之間的通訊通道在初始化ROMA 的 SDK時就已經建立,Native和WebView的數據交互也通過postMessage的方式建立,如下圖所示:

圖片圖片

以上,JUE通過調用call native將數據發送到Native,Native通過window.dispatchEvent的方式將數據傳遞給WebView。而圖表上的手勢交互等事件WebView 通過postMessage的方式發送,在Native監聽指定類型的message獲取數據,通過處理并通過fire event觸發到JUE。

2. 緩存的設計

對于echarts渲染圖表數據,大致經歷以下過程,創建WebView,加載echarts.js 渲染庫,資源開始加載,資源成功加載,最后渲染圖表數據,這幾個過程中,除了最后一步渲染數據,前面的步驟都可以提前做,越早完成前面的工作,越能提升圖表渲染的效率。

圖片圖片

為此,設計了可重復利用的并可自動擴容的WebView緩存容器 JRTransEchartsCache。在App啟動階段緩存min個WebView保存至緩存列表cacheArray中,并持續跟蹤WebView加載echarts.js的階段,確保在成功加載了 echarts.js 資源后再開始渲染圖表數據。而對于過早的圖表渲染指令,則先保存至指定標簽的指令緩存列表eventArray中,待成功加載后,再渲染eventArray中的數據。

而對于WebView加載echarts.js資源失敗的情況,也加入了失敗重試的邏輯,當業務端發起數據渲染時會檢查環境狀態,而觸發echarts.js的重新加載。

隨著WebView使用,其狀態被標記為using,并根據使用的情況,自動觸發cacheArray中的WebView擴容,最大擴容至max個。對于從詳情頁返回而釋放的圖表,其 WebView 將會被標記為free,可提供為其他的圖表視圖使用。當使用圖表的業務持續增多,當cacheArray中的WebView都被使用后,則新創建的WebView不再加入 cacheArray,遵循當次獲取,當次創建,使用完成,就地銷毀的原則。

3. 渲染流程

下圖記錄了從App啟動到業務創建echarts圖表,到業務退出,再到App退出期間,融合了緩存的初始化以及自動擴容,包括在WebView加載echarts.js資源的不同階段對渲染指令的處理,以及視圖銷毀后的內存處理等場景下的處理流程。

圖片圖片

四、效果驗證

為了更直觀的展示圖表在業務上的使用場景,使用重構后的圖表標簽渲染柱狀圖、條形圖、折線圖、餅圖和組合圖表,渲染的效果和操作都很流暢(由于文檔的限制,對以下視頻做了降頻和清晰度的處理),效果如下:

圖片圖片

五、總結

通過此次圖表的重構,以iPhoneXS Max設備為例,在App冷啟時的首頁首屏渲染圖表數據的時間平均縮短了200ms;冷啟首頁首屏圖表的渲染成功率由之前的平均90%提升至近100%;非首頁首屏的圖表渲染幾乎零延遲;對于異常情況導致的環境初始化失敗的問題,也在接受渲染指令時自檢渲染環境并重啟環境初始化,自動恢復數據的渲染。


責任編輯:武曉燕 來源: 京東技術
相關推薦

2010-02-23 09:02:00

Visual Stud

2012-09-21 09:55:35

WordOffice 2013

2023-11-20 09:55:34

音頻圖表SwiftUI

2017-12-12 08:20:54

圖表視覺暗示可視化

2023-08-01 16:01:59

可視化Seaborn

2023-12-05 15:58:06

React開發

2025-10-10 03:00:00

2009-10-30 09:54:52

Internet接入

2009-11-16 14:31:26

原型開發

2022-05-24 14:37:49

React條件渲染

2022-09-06 07:02:17

棋盤布局CSS

2011-09-09 19:05:28

Widget

2024-01-16 08:05:53

2022-10-08 00:01:00

ssrvuereact

2015-03-18 09:59:14

CSSCSS提高渲染性

2025-04-27 03:44:00

JavaScript代碼函數

2024-10-15 15:18:01

JavaScript開發

2024-10-07 12:23:03

字符串Map對象

2025-04-25 08:50:00

JavaScript代碼開發

2009-11-12 11:30:13

Scrum
點贊
收藏

51CTO技術棧公眾號

亚洲网站在线| 亚洲日本va中文字幕| 国产人伦精品一区二区| 国产精品欧美日韩久久| 午夜时刻免费入口| 亚洲国产aⅴ精品一区二区三区| 成人欧美一区二区三区黑人麻豆 | 看黄色一级大片| 68国产成人综合久久精品| 精品欧美黑人一区二区三区| 久久美女福利视频| 国产精品刘玥久久一区| 成人国产亚洲欧美成人综合网| 日韩av电影在线播放| 成人在线观看小视频| 国产精品国产| 欧美福利一区二区| 国产福利视频在线播放| 怡红院av在线| 国产精品美女久久久久久久久久久| 国产成人精品日本亚洲11 | 激情国产在线| 亚洲三级免费观看| 日韩理论片在线观看| 国内精品偷拍视频| 美女视频一区在线观看| 91精品国产高清久久久久久| 色欲一区二区三区精品a片| 亚洲视频分类| 亚洲成人精品视频| 日本网站在线看| yiren22亚洲综合| 疯狂做受xxxx欧美肥白少妇 | 网爆门在线观看| 日韩电影不卡一区| 精品久久五月天| 中文字幕第一页在线视频| 亚洲综合在线电影| 黑人狂躁日本妞一区二区三区| 50度灰在线观看| 免费av毛片在线看| 91女神在线视频| 国产日韩一区二区三区| 丰满人妻一区二区三区免费| 精品亚洲aⅴ乱码一区二区三区| 国产不卡av在线免费观看| 日韩特黄一级片| 亚洲香蕉网站| 欧美人在线观看| 中文字幕在线观看成人| 88国产精品视频一区二区三区| 亚洲午夜精品视频| 青青草福利视频| 亚洲国产合集| 亚洲欧美中文日韩在线| 欧美高清性xxxx| 日韩三区视频| 亚洲人精选亚洲人成在线| 女~淫辱の触手3d动漫| 亚洲小说图片| 亚洲午夜性刺激影院| 摸摸摸bbb毛毛毛片| 香蕉一区二区| 亚洲网站在线播放| 天天操天天摸天天舔| 欧美激情欧美| 欧美成人午夜免费视在线看片 | 亚洲一区二区三区四区视频 | 亚洲国产另类 国产精品国产免费| 三级网站免费看| 97久久综合区小说区图片区| 精品88久久久久88久久久| 性囗交免费视频观看| 色综合www| 亚洲视频综合网| 欧美成人久久久免费播放| 香蕉久久网站| 欧美激情亚洲国产| 二区视频在线观看| 免费观看在线色综合| 成人黄色大片在线免费观看| 精品久久久无码中文字幕| 懂色av一区二区夜夜嗨| 精品综合在线| av在线免费播放网站| 中文字幕五月欧美| 日本精品久久久久久久久久| 北岛玲heyzo一区二区| 欧美在线免费观看视频| 拔插拔插华人永久免费| 国内自拍欧美| 亚洲天堂日韩电影| 国产这里有精品| 亚洲综合精品| 亚洲一区久久久| 五月婷婷在线观看视频| 国产精品三级电影| 日本xxxxxxxxxx75| 国产91在线精品| 制服丝袜亚洲色图| 中文字幕在线免费看线人 | 免费特级黄色片| 咪咪网在线视频| 欧美另类一区二区三区| 欧美肉大捧一进一出免费视频| 狠狠综合久久av一区二区蜜桃 | 亚洲成人精品视频在线观看| 四虎成人免费影院| 亚洲乱码视频| 91网站在线免费观看| 外国精品视频在线观看| 亚洲美女屁股眼交3| 日本成年人网址| 欧美国产亚洲精品| 亚洲一区二区精品| 亚洲国产精品成人无久久精品| 秋霞影院一区二区| 久久久久一区二区三区| av片在线观看免费| 欧美在线你懂得| 亚洲午夜久久久久久久久红桃| 综合亚洲视频| 国产欧美日韩中文字幕| 欧洲毛片在线| 午夜精品影院在线观看| 99热这里只有精品2| 精品国产乱码久久久久久果冻传媒 | 熟女人妻一区二区三区免费看| 精品国产美女| 日本久久久久久久久| 天天操天天干天天| 亚洲午夜羞羞片| 四虎1515hh.com| 国产精品久久久久无码av| 欧洲午夜精品久久久| 农村少妇久久久久久久| 亚洲男同1069视频| av中文字幕网址| 久久精品国产99久久| 国产精品国产亚洲伊人久久 | 亚洲日产av中文字幕| 97在线精品视频| 婷婷色在线观看| 亚洲妇女屁股眼交7| 国产成人精品综合久久久久99| 99久久精品网站| 国产欧美日韩中文| 三级外国片在线观看视频| 欧美三级三级三级爽爽爽| 国产精品国产三级国产专业不 | 经典三级在线| 色94色欧美sute亚洲13| 熟女少妇一区二区三区| 翔田千里一区二区| 欧美日韩一区在线观看视频| 英国三级经典在线观看| 亚洲欧美一区二区三区情侣bbw| 日本三级一区二区| 2020日本不卡一区二区视频| av免费在线播放网站| 国产一区二区三区日韩精品| 国产精品扒开腿做爽爽爽男男| 国产日韩精品在线看| 欧美日韩在线播放| 91精品国产闺蜜国产在线闺蜜| 精品综合免费视频观看| 日本xxx免费| 亚洲精品一区二区三区中文字幕 | 中文字幕av免费观看| 国产精品视频你懂的| 午夜精品久久久久久久99热影院| 亚洲成av人片乱码色午夜| 国产 高清 精品 在线 a| 涩涩在线视频| 日韩最新在线视频| 亚洲黄色片视频| 欧美性猛交xxxx免费看| 欧美日韩生活片| 国产成人精品免费视频网站| 又粗又黑又大的吊av| 成人综合一区| 成人动漫视频在线观看完整版| 6699嫩草久久久精品影院| 亚洲天堂成人在线| 国产男女猛烈无遮挡| 亚洲大型综合色站| 91资源在线播放| 国产一区二区不卡| 成年人免费在线播放| 91精品观看| 欧美日韩在线一二三| **精品中文字幕一区二区三区| 国内揄拍国内精品少妇国语| 理论视频在线| 欧美成人国产一区二区| 国产情侣免费视频| 亚洲国产aⅴ天堂久久| 9.1片黄在线观看| caoporen国产精品视频| av亚洲天堂网| 麻豆成人精品| 国产一区二区三区小说| 日本黄色精品| 蜜桃传媒视频麻豆一区 | 青青草国产精品97视觉盛宴 | 牛牛精品一区二区| 久久精品久久久久电影| 免费动漫网站在线观看| 日韩欧美国产三级电影视频| 国产天堂第一区| 精品久久久在线观看| 91视频免费在线看| 亚洲国产成人在线| 可以直接看的无码av| 国产精品123区| 久久黄色片网站| 久久欧美肥婆一二区| 成人精品视频在线播放| 图片小说视频色综合| 色阁综合av| 最新国产一区| 精品欧美日韩在线| 最新精品在线| 99视频免费观看| 精品一区二区三区在线观看视频| 国产精品久久久精品| 悠悠资源网亚洲青| 97高清免费视频| 少女频道在线观看高清 | 亚洲成人午夜在线| 亚洲另类春色校园小说| 国精产品一区二区| 国产成人tv| 国产精品一区在线播放| 粉嫩av国产一区二区三区| 国产区精品在线观看| 成人国产激情在线| 国产精品狼人色视频一区| 欧美日韩免费观看视频| 国产成人精品国内自产拍免费看| 永久免费毛片在线播放| 欧美自拍大量在线观看| 在线日韩影院| 欧美一级片久久久久久久| 欧洲一区精品| 欧洲亚洲免费在线| 欧美黑人疯狂性受xxxxx野外| 欧美亚洲在线视频| 国产精品专区免费| 国产精品成人av在线| 成人精品高清在线视频| 国产精品专区一| 伦一区二区三区中文字幕v亚洲| 国产精品人人做人人爽| 日本在线一区二区| 91影视免费在线观看| 国产精品1区| 国产精品.com| 亚洲男人都懂第一日本| 日本亚洲欧洲精品| 日本大胆欧美| 久久久久久av无码免费网站下载| 狠狠入ady亚洲精品经典电影| 少妇无码av无码专区在线观看| 麻豆亚洲精品| 亚洲高清免费在线观看| 国产一区高清在线| 特级特黄刘亦菲aaa级| 91视频在线看| 色www亚洲国产阿娇yao| 亚洲另类在线制服丝袜| 日产电影一区二区三区| 一本到高清视频免费精品| 中文有码在线播放| 日韩欧美国产午夜精品| 欧美日韩在线中文字幕| 精品国产网站地址| 国产天堂在线播放视频| 国产91免费观看| 亚洲一区导航| 精品一区二区不卡| 日韩电影一区| 搞av.com| 毛片一区二区三区| 四虎精品一区二区| 欧美韩国日本综合| 欧美精品成人久久| 在线看国产日韩| 国产av无码专区亚洲av| 亚洲免费中文字幕| 91精选在线| 国产99在线|中文| caoporn成人| 小说区图片区图片区另类灬| 国产中文一区| 小泽玛利亚视频在线观看| 成人va在线观看| 中文字幕美女视频| 岛国精品视频在线播放| 99热精品在线播放| 亚洲午夜未删减在线观看 | 无码av免费一区二区三区试看| 欧美日韩在线视频播放| 精品欧美一区二区久久| 免费在线看黄| 日韩免费在线播放| 超碰成人在线免费| 在线视频不卡国产| 久久婷婷av| 2一3sex性hd| 亚洲美女一区二区三区| 中文 欧美 日韩| 亚洲美女在线观看| 懂色av一区| 5g国产欧美日韩视频| 色欧美自拍视频| 草草草在线视频| 99国产精品99久久久久久| 日本a级片视频| 欧美人狂配大交3d怪物一区| 男人天堂亚洲二区| 17婷婷久久www| 精品精品国产三级a∨在线| 青青草综合在线| 韩国欧美国产1区| 色www亚洲国产阿娇yao| 欧美亚一区二区| 国产色在线 com| 国产精品第一页在线| 色棕色天天综合网| 国产精品视频一区二区三区四区五区| 国产99久久精品| 久草网视频在线观看| 日韩午夜激情视频| 黄色av电影在线观看| 成人做爽爽免费视频| 欧美激情成人| 天天av天天操| 亚洲伦在线观看| 国产成人免费看一级大黄| 久久这里只有精品视频首页| 日韩欧美三区| 最近中文字幕免费mv| 国产综合久久久久影院| 国产一二三区精品| 欧美一级二级三级蜜桃| 1区2区3区在线视频| 91成人免费视频| 黄色综合网站| 黄色在线观看av| 在线看国产一区二区| 日日夜夜精品一区| 亚洲综合在线小说| 亚洲成人中文| 中国美女乱淫免费看视频| 91九色最新地址| 麻豆视频在线| av资源站久久亚洲| 国产亚洲毛片| 久久国产柳州莫菁门| 精品视频1区2区3区| 成人在线免费看片| 国产精品美女诱惑| 男女精品视频| 日韩亚洲欧美中文字幕| 日韩欧美aaaaaa| 日韩激情电影免费看| 日韩资源av在线| 国产一区二区不卡老阿姨| 国产成人在线观看网站| 亚洲性夜色噜噜噜7777| 91成人福利社区| 日韩精品一区在线视频| 久久精品一区蜜桃臀影院| 一区二区三区精彩视频| 欧美激情第6页| 国产欧美日韩精品高清二区综合区| 香蕉视频网站入口| 一区二区三区不卡在线观看| 性xxxx视频| 国产综合视频在线观看| 在线成人h网| 国产在线综合视频| 欧美精品一区二| 国产精品久久久久久妇女| www.国产二区| 欧美极品美女视频| 亚洲成人777777| 国产精品成人品| 欧美私人啪啪vps| a天堂中文字幕| 日韩欧美亚洲国产精品字幕久久久| 欧亚av在线| 亚洲av综合色区| 久久精品一级爱片| 午夜精品久久久久久久96蜜桃| 国产99久久精品一区二区| 欧美日本精品| 超碰人人干人人| 亚洲精品wwww|