精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

999视频在线免费观看| 黑人狂躁日本妞一区二区三区| 国产欧美精品在线| 男人操女人的视频网站| 国产精品视频3p| 在线亚洲免费视频| 草草草视频在线观看| 午夜福利理论片在线观看| 奇米影视一区二区三区| 欧美极品美女视频网站在线观看免费| 国产在线观看无码免费视频| 亚洲成人精品综合在线| 亚洲成人综合网站| 视频一区视频二区视频| 国产免费高清视频| 日韩黄色一级片| 欧美国产第一页| 91香蕉国产视频| 亚洲高清极品| 欧美成人精品3d动漫h| 日韩一级免费在线观看| heyzo一区| 国产精品伦理在线| 鲁丝一区二区三区免费| 亚洲免费黄色片| 美美哒免费高清在线观看视频一区二区| 久久久人成影片一区二区三区观看 | 亚洲精品福利电影| 亚洲一区二区在线免费看| 亚欧洲精品在线视频免费观看| 欧美特黄一级视频| 国产成人午夜精品影院观看视频 | 97人人爽人人爽人人爽| 视频一区在线播放| 97超碰色婷婷| 精品无码m3u8在线观看| 在线中文字幕亚洲| 久久韩剧网电视剧| 国产三级黄色片| 国产aⅴ精品一区二区三区久久| 精品国产91洋老外米糕| 中文字幕一二三区| 精品国产伦一区二区三区观看说明 | 可以在线看的黄色网址| 神马久久午夜| 疯狂欧美牲乱大交777| 日韩网站在线免费观看| 人人澡人人添人人爽一区二区| 中文字幕一区二区三中文字幕| 相泽南亚洲一区二区在线播放 | 日本三区在线观看| 亚洲国产福利| 一本久道中文字幕精品亚洲嫩| 国产免费成人在线| 亚洲天堂免费电影| 色婷婷久久综合| 日本va中文字幕| 本网站久久精品| 欧美日韩的一区二区| 三上悠亚在线一区二区| 久久91视频| 91精品国产综合久久久久久久久久 | 国产精品自拍在线| 97视频中文字幕| 成人久久久精品国产乱码一区二区| 风间由美一区二区三区在线观看| 成人欧美一区二区三区在线观看 | www.亚洲色图| 欧美精品尤物在线| youjizz在线播放| 日韩毛片高清在线播放| 伊人再见免费在线观看高清版| 伊人影院在线视频| 亚洲国产一区二区在线播放| 99精品人妻少妇一区二区| 黑人巨大精品| 精品视频色一区| 巨乳女教师的诱惑| 日韩美女毛片| 色噜噜国产精品视频一区二区| 成人免费视频网站入口::| 在线欧美不卡| 国产成人免费av| 国产女主播福利| www.亚洲色图.com| 亚洲一区二区三区精品动漫| 色女人在线视频| 日韩欧美在线看| 中国黄色片一级| 美女扒开腿让男人桶爽久久动漫| 亚洲午夜女主播在线直播| 九九这里只有精品视频| 亚洲国产专区校园欧美| 国产精品久久久久久久久影视| 国产精品一区二区三区在线免费观看| 成人性生交大片免费看中文网站| 欧美日产一区二区三区在线观看| 好吊日视频在线观看| 精品久久久一区二区| 亚洲一区日韩精品| 欧美三级电影在线| 久久精品2019中文字幕| 九九热在线免费观看| 韩国女主播成人在线| 蜜桃传媒视频麻豆第一区免费观看| 嫩草在线视频| 欧美性猛xxx| 国产精品偷伦视频免费观看了| 欧美日韩123| 久久久久久久爱| 一级黄色片免费看| 26uuu亚洲| 亚洲乱码日产精品bd在线观看| 成人看片网页| 亚洲精品福利视频| 久久久美女视频| 久久99精品久久久久久国产越南 | 91精品国产自产在线| 天堂网在线观看视频| 国产精品国产三级国产普通话蜜臀| 极品粉嫩国产18尤物| 国产一区二区在线观| 中文字幕久久精品| 国产美女激情视频| 成人综合婷婷国产精品久久蜜臀| 一本一生久久a久久精品综合蜜 | 国产视频在线观看一区| 国产美女福利在线| 欧美性一区二区| 欧美色图亚洲激情| 99热免费精品在线观看| 97视频中文字幕| 91一区二区三区在线| 欧美美女激情18p| 91社区视频在线观看| 天使萌一区二区三区免费观看| 精品日韩美女| 亚洲第一av| 日韩h在线观看| 西西44rtwww国产精品| 成人av在线资源| 国产成人永久免费视频| 66精品视频在线观看| 精品综合久久久久久97| 国产成人精品一区二区无码呦| 中文字幕中文字幕在线一区| 五月婷婷丁香色| 我不卡手机影院| 亚洲最大成人网色| av网站在线看| 精品国产成人系列| 日本黄色片视频| 久久久久国产精品免费免费搜索| 久久久久久久久久久视频| 亚洲精品aaaaa| 国产精品com| 日本在线视频观看| 91麻豆精品国产91久久久久久久久 | 欧美一区二区三区粗大| 看片的网站亚洲| 最新中文字幕久久| 一区二区三区国产好| 久久久久久久久久久人体| 欧美 日韩 中文字幕| 欧美日韩午夜激情| 亚洲精品午夜视频| 九一久久久久久| 成人区一区二区| 日韩av不卡一区| 国产精品久久久久福利| 免费网站成人| 亚洲国产日韩欧美综合久久| 自拍偷拍18p| 18欧美亚洲精品| 国产高清成人久久| 免费成人av在线| 中国女人做爰视频| 欧美大胆视频| 国产精品主播视频| 国产三级伦理在线| 亚洲色图35p| 国产99视频在线| 一本色道久久加勒比精品| 永久免费未视频| 成a人片亚洲日本久久| 福利在线一区二区三区| 欧美+日本+国产+在线a∨观看| 国产区日韩欧美| 九色成人搞黄网站| 久久久久久这里只有精品| 国产香蕉在线| 亚洲缚视频在线观看| 成人黄色片在线观看| 亚洲一级二级三级| 美国黑人一级大黄| av电影一区二区| 91看片破解版| 视频一区中文字幕| 欧美不卡在线播放| 国产精品久久久久久影院8一贰佰 国产精品久久久久久麻豆一区软件 | 国精品**一区二区三区在线蜜桃 | 日韩经典一区二区三区| 97国产精品久久久| 色香蕉久久蜜桃| 国产真实乱人偷精品视频| 日本一区二区三区四区在线视频 | 77777少妇光屁股久久一区| 日本精品在线| 亚洲女人天堂成人av在线| 精品国产999久久久免费| 在线免费观看视频一区| 日韩精品国产一区二区| 亚洲乱码中文字幕| 亚洲一二三四视频| 91丝袜美腿高跟国产极品老师 | 老熟妇高潮一区二区高清视频| 欧美私模裸体表演在线观看| 一级免费在线观看| 夜夜嗨av一区二区三区中文字幕| 中文天堂资源在线| 久久久久久久久一| 在线精品一区二区三区| 国产精品系列在线播放| 成人不卡免费视频| 日本午夜精品视频在线观看| 黄色片一级视频| 一区二区久久| 秋霞无码一区二区| 国一区二区在线观看| 在线观看污视频| 91精品国产乱码久久久久久久| 亚欧精品在线| 日本一区二区高清不卡| 欧美资源一区| 国产精品一在线观看| 久久综合九色欧美狠狠| 欧美美女在线直播| 国内精品久久国产| 激情av综合| 国产伦精品一区二区三区四区视频| 日韩激情欧美| av成人在线电影| 99国产精品免费网站| 99热在线播放| 精品福利一区| 久久国产精品高清| 小嫩嫩12欧美| 日本在线成人一区二区| 欧洲乱码伦视频免费| 日韩精品久久久毛片一区二区| 精品美女久久久| 亚欧洲精品在线视频免费观看| 日韩欧美视频在线播放| 五月天色婷婷综合| 夜间精品视频| www.av蜜桃| 国产欧美一区二区三区国产幕精品| 久久久久久久中文| 亚洲欧美日韩精品一区二区 | 成人啊v在线| 国产在线精品播放| 日韩成人精品| 狠狠久久综合婷婷不卡| 天堂一区二区三区四区| 日韩在线电影一区| 亚洲欧美日韩高清在线| 精品人妻大屁股白浆无码| 亚洲激情专区| 亚洲第一狼人区| 国产精品一品二品| 91视频啊啊啊| 国产精品视频线看| 国产高清在线免费观看| 午夜电影一区二区三区| 国产嫩bbwbbw高潮| 欧美精选一区二区| 亚洲国产精彩视频| 亚洲全黄一级网站| 国产精品实拍| 91精品国产色综合| 欧美成人三级| 国产精品国产一区二区| 国产在视频线精品视频www666| 亚洲一区二三| 99综合精品| 亚洲免费av一区| 99久久久免费精品国产一区二区 | 亚洲制服丝袜av| 亚洲另类在线观看| 日韩免费一区二区| 国产香蕉视频在线看| 欧美国产精品va在线观看| 欧美艳星kaydenkross| 亚洲aa在线观看| 九九热爱视频精品视频| 国产日韩亚洲欧美在线| 日韩精品每日更新| 日本一区二区免费视频| 中文字幕免费不卡| 全部毛片永久免费看| 91精品国产一区二区人妖| 欧美美乳在线| 久久久久久伊人| 国产人与zoxxxx另类91| 日韩国产精品一区二区三区| 在线不卡欧美| 香蕉网在线视频| 国产精品三级在线观看| 国产精品7777777| 日韩一级片在线观看| 91免费在线| 国产97色在线|日韩| 草草视频在线一区二区| 久久视频免费在线| 日本不卡视频在线观看| 一区二区视频观看| 亚洲尤物在线视频观看| 一级黄色免费看| 一本色道久久88亚洲综合88| 日韩伦理在线| 国产色综合一区二区三区| 在线精品视频在线观看高清| 高清一区在线观看| 国产视频在线观看一区二区三区| www日韩精品| 欧美mv日韩mv亚洲| 国产在线69| 91精品国产自产在线观看永久| 欧美一级精品片在线看| aa在线免费观看| 97精品国产97久久久久久久久久久久| 免费视频一二三区| 91精品国产麻豆| 好了av在线| 97超碰人人看人人| 重囗味另类老妇506070| 超碰在线资源站| 亚洲桃色在线一区| 国产精品乱码一区二区| 久久久国产精品一区| avtt久久| 肉大捧一出免费观看网站在线播放 | 黄色在线网站| 国产精品久久久久久久久久东京| 神马久久一区二区三区| 成人亚洲视频在线观看| 欧美韩国日本不卡| 中文在线字幕av| 日韩色av导航| 国产精品一区二区三区av | 中文字幕中文字幕在线十八区| 成人福利视频在线观看| 亚洲中无吗在线| 制服.丝袜.亚洲.中文.综合懂| 亚洲综合久久久久| 国产又爽又黄网站亚洲视频123| 91tv亚洲精品香蕉国产一区7ujn| 亚洲图区在线| 久久久精品麻豆| 亚洲色图20p| 成人午夜精品福利免费| 欧美在线亚洲一区| 成人激情在线| av在线网站免费观看| 亚洲国产一区二区在线播放| 桃花色综合影院| 国产精品自产拍在线观看| 91精品一区二区三区综合在线爱| 国产黑丝在线视频| 亚洲成人动漫精品| 国产在线三区| 91啪国产在线| 国产精品久久久免费| 少妇无套高潮一二三区| 91精选在线观看| 手机av在线| 色中文字幕在线观看| 成人涩涩免费视频| 亚洲图片欧美日韩| 毛片精品免费在线观看| 欧美黄色录像| 污污的网站免费| 精品日本高清在线播放| 在线观看免费黄视频| 成人欧美一区二区三区视频| 日韩电影网1区2区| 久久久久久久久精| 亚洲少妇激情视频| 亚洲一级大片| 三级在线免费看| 亚洲sss视频在线视频| 99免在线观看免费视频高清| 国产精品对白刺激久久久| 日韩成人一区二区三区在线观看| 少妇影院在线观看| 在线观看久久久久久| 51精品国产| 日韩av自拍偷拍| 色哟哟日韩精品| av美女在线观看|