一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

動態(tài)化-羅碼(京東科技一碼多端解決方案)介紹

京東云 ? 來源:胡大海 ? 作者:胡大海 ? 2025-04-07 13:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者;京東科技 胡大海

前言

動態(tài)化-羅碼(后文統(tǒng)稱動態(tài)化)是一個全自主研發(fā)的一站式跨平臺解決方案,一份代碼,可以在iOS、Android、H5及華為HarmonyOS運行。在研發(fā)團(tuán)隊使用后可大幅降低研發(fā)人力成本;為業(yè)務(wù)提供實時觸達(dá)、A/B觸達(dá)等能力以提升業(yè)務(wù)投放效率;同時保障了C端用戶優(yōu)秀的用戶體驗。

一、背景

市面上的APP,一般使用兩種技術(shù)方式承載業(yè)務(wù):

1、原生開發(fā)方式:優(yōu)勢是可以充分使用系統(tǒng)能力,帶來極致的用戶體驗;劣勢是動態(tài)性差、發(fā)布周期長、無法跨平臺。

2、H5開發(fā)方式:優(yōu)勢是動態(tài)性好、可隨時發(fā)布、支持多平臺;劣勢是體驗相對較差、系統(tǒng)能力使用受限(需要通過橋接使用系統(tǒng)原生能力)。

wKgZPGfzZNGAGr-HAAJtdLx7-Bk614.png

我們從業(yè)務(wù)效率、用戶體驗、研發(fā)成本三個維度總結(jié)以上兩種技術(shù)存在的問題:

1、業(yè)務(wù)效率

公司端內(nèi)業(yè)務(wù)需求一般需要集中在某一個固定時間發(fā)版,且各個應(yīng)用市場對于APP的發(fā)版都有審核的周期,這樣原生開發(fā)的業(yè)務(wù)就無法及時觸達(dá)用戶,甚至對于未升級的舊版用戶無法觸達(dá)。

2、用戶體驗

研究表明,如果一個移動端頁面加載時長超過 3 秒,用戶就會放棄等待;網(wǎng)頁加載時長每增加1 秒,用戶就會流失 10%,但是由于WebView本身的歷史包袱,渲染性能差、JS執(zhí)行效率低、用戶體驗差的問題一直無法徹底解決。

3、研發(fā)成本

同一個業(yè)務(wù)如果四端(H5、Android、iOS、Harmony)同時開發(fā),需要投入四端人員,開發(fā)成本高。

wKgZO2fzZNKAV5sIAADAsQJVvNA876.png

二、方案實踐

1、方案簡介

針對上述背景中兩種技術(shù)存在的問題,業(yè)界相繼出現(xiàn)了FaceBook公司的ReactNative、阿里巴巴公司的Weex、騰訊公司的微信小程序、京東的Taro(RN原生部分)、Google公司的的Flutter、華為的ArkUI-X等各種跨端解決方案。

wKgZPGfzZNKAdmTXAAC051aNJQI165.png

幾乎每個跨端解決方案追求的就是在保證C端用戶良好的用戶體驗的同時,讓業(yè)務(wù)以最小的人力成本和最快的速度觸達(dá)用戶;下面我們從開發(fā)效率、性能、動態(tài)性、渲染方式、上手難度等維度對業(yè)界跨端方案及我們自研的動態(tài)化跨端方案做對一個對比:

框架代表 React Native Weex H5 小程序 Flutter 動態(tài)化
開發(fā)效率
性能
動態(tài)性 無(官方不支持)
渲染方式 原生控件渲染 原生控件渲染 WebView渲染 WebView渲染 自繪制渲染(SKIA) 原生控件渲染
核心語言 JSX Vue Vue等 自定義DSL Dart Jue(類Vue的DSL)
上手難度
業(yè)務(wù)包大小 默認(rèn)單一、較大 較小、可多文件 隨頁面下發(fā) 隨頁面下發(fā) 隨APP發(fā)布 較小、可多文件

通過上述表格對比發(fā)現(xiàn),每一個框架都有很多優(yōu)劣和部分劣勢,那么為什么要自己再做一個動態(tài)化方案而不直接使用現(xiàn)有方案呢?

1、React Native和Weex是兩個比較相似的技術(shù)方案,Weex在核心開發(fā)語言和包大小(React Native可以通過業(yè)務(wù)拆包減小包大小)相比React Native具有一定的優(yōu)勢,但是都存在兩個共性的問題,第一對于常用的長列表渲染、瀑布流渲染都存在渲染瓶頸,第二在框架每次升級后都需要所有存量業(yè)務(wù)測試驗證,造成測試成本突增、業(yè)務(wù)穩(wěn)定性被破壞。

2、H5通過離線化技術(shù)能夠一定程度緩解渲染速度,但在復(fù)雜場景交互仍然存在較多交互問題,甚至在運營商被劫持、Cookie丟失等場景會導(dǎo)致頁面直接白屏。

3、小程序可以看做是一個特殊的H5技術(shù),它使用了雙線程模型將UI渲染和業(yè)務(wù)邏輯分散到兩個線程執(zhí)行。

4、Flutter的Dart開發(fā)語言相比其他框架學(xué)習(xí)門檻較高,并且因為沒有動態(tài)更新能力,無法滿足業(yè)務(wù)熱更新的訴求,雖然可以通過一定的技術(shù)手段達(dá)到動態(tài)發(fā)布的目的,但整個鏈路就會變得復(fù)雜,導(dǎo)致業(yè)務(wù)維護(hù)、排查問題成本直線上升。

每一個框架都有很多先進(jìn)理念值得我們學(xué)習(xí),站在巨人的肩膀上,我們吸取了各個框架的優(yōu)勢,加上自主創(chuàng)新,發(fā)明了卡片級動態(tài)化渲染技術(shù)、高性能列表技術(shù)、底層框架升級業(yè)務(wù)無感技術(shù)、業(yè)務(wù)天然分包技術(shù)、多端分布式實時預(yù)覽等一系創(chuàng)新,打造了自主可控的動態(tài)化跨端解決方案。

2、實現(xiàn)方案

2.1、源代碼

分為JSEngine和業(yè)務(wù)代碼(Hello.jue)兩個部分,JSEngine即為我們自主研發(fā)的業(yè)務(wù)代碼運行時環(huán)境,在產(chǎn)物運行階段會第一時間被加載,負(fù)責(zé)業(yè)務(wù)代碼實例管理、任務(wù)管理、虛擬Dom樹管理、虛擬Dom樹Differ、業(yè)務(wù)頁面渲染管理、生命周期管理、事件分發(fā)、業(yè)務(wù)邏輯處理等一系列功能;業(yè)務(wù)代碼即具體的業(yè)務(wù)代碼,其結(jié)構(gòu)和Vue一致,包含了描述業(yè)務(wù)UI的template、業(yè)務(wù)邏輯表達(dá)的script以及業(yè)務(wù)UI樣式的style三個部分,語法和Vue幾乎一致,但是具備了標(biāo)簽擴(kuò)展能力,比如在長列表和瀑布流場景我們可以通過結(jié)合原生列表及瀑布流控件快速打造出一個高性能的列表標(biāo)簽。

2.2、腳手架

腳手架方便開發(fā)者進(jìn)行項目工程化管理,通過我們自研的complier loader完成業(yè)務(wù)代碼及JSEngine的編譯工作,借助Babel插件支持了ES6語法,支持圖片Base64轉(zhuǎn)換、產(chǎn)物Zip壓縮、熱重載等一系列能力;為保障業(yè)務(wù)構(gòu)建產(chǎn)物安全,目前腳手架構(gòu)建能力已經(jīng)以云端構(gòu)建方式運行,提供了統(tǒng)一的構(gòu)建環(huán)境。

2.3、產(chǎn)物管理

云端構(gòu)建的產(chǎn)物,可以直接發(fā)布到動態(tài)化資源管理后臺,后臺提供了資源加密、灰度發(fā)布、長連接推送等強大的管理能力,滿足了業(yè)務(wù)人群灰度、AB發(fā)布等訴求,為業(yè)務(wù)快速試錯提供了有力保障。

2.4、產(chǎn)物運行

這里分為兩種類型產(chǎn)物的運行,首先是JSEngine,在iOS系統(tǒng)使用系統(tǒng)提供的JSCore、在安卓系統(tǒng)使用V8引擎、在Web使用瀏覽器的WebKit,由一個專門的JS線程在一個最早的時機(jī)(比如APP啟動)進(jìn)行JSEngine的加載,加載完畢后,就形成了了業(yè)務(wù)產(chǎn)物運行的環(huán)境;然后客戶端通過下載后臺對應(yīng)的產(chǎn)物,經(jīng)過解密及解壓縮后就得到了業(yè)務(wù)原始JS文件,業(yè)務(wù)資源的運行過程,是一個創(chuàng)建業(yè)務(wù)實例的過程,由JSEngine統(tǒng)一管理。

2.5、統(tǒng)一接口聲明

JSEngine統(tǒng)一創(chuàng)建業(yè)務(wù)實例的過程是統(tǒng)一的,而真正渲染的客戶端是多個(iOS、Android、H5、HarmonyOS等),通過制定統(tǒng)一的接口規(guī)范客戶端標(biāo)準(zhǔn)化對接及擴(kuò)展(比如在華為鴻蒙系統(tǒng)適配只需實現(xiàn)統(tǒng)一接口即可),接口包含了實例創(chuàng)建聲明周期、元素的增刪改查、JS和原生的雙向通訊、熱重載交互等各種能力。

2.6、接口實現(xiàn)

這個過程的核心任務(wù)是在iOS、Android等系統(tǒng)上,實現(xiàn)統(tǒng)一接口聲明的方法,創(chuàng)建出業(yè)務(wù)對應(yīng)的頁面和處理業(yè)務(wù)交互邏輯。通過完成統(tǒng)一接口的元素增刪改操作及其他指令后就構(gòu)建出了一個組件樹,再經(jīng)過布局引擎布局后,就顯示出了業(yè)務(wù)具體的頁面效果;當(dāng)用戶在業(yè)務(wù)頁面發(fā)生了交互事件后,通過統(tǒng)一接口的JS和原生的雙向通訊調(diào)用到業(yè)務(wù)方,當(dāng)業(yè)務(wù)方需要改變UI布局的時候,同樣通過JS和原生的雙向通訊觸發(fā)布局引擎重新布局,由于JS語言本身是圖靈完備的,所以任何業(yè)務(wù)邏輯都可以在JS中實現(xiàn)而不會收到任何限制;這樣就完成了業(yè)務(wù)UI渲染和交互邏輯的處理過程。

三、應(yīng)用場景

1、卡片場景

動態(tài)化項目孵化于京東金融APP實際業(yè)務(wù)場景,京東金融APP的積木式構(gòu)建頁面的技術(shù),一定程度上能夠根據(jù)接口數(shù)據(jù)驅(qū)動預(yù)埋在客戶端的積木卡片自由組合一個頁面,但是存量積木卡片修改及新增依然需要發(fā)版。當(dāng)時通過調(diào)研發(fā)現(xiàn),市面上的跨端技術(shù)多以頁面維度進(jìn)行支持,對于局部卡片模式的跨端沒有很好的解決方案,我們決定自研一個能夠和原生卡片共存的區(qū)域卡片動態(tài)化技術(shù),目標(biāo)如下圖所示,被放大的兩個卡片使用動態(tài)化技術(shù)實現(xiàn),不改變其余樓層的原生實現(xiàn)方式。

wKgZO2fzZNSASi9yAAiReAqJHbw496.png

區(qū)域動態(tài)化技術(shù)是我們自研的一套跨平臺、動態(tài)化的樓層卡片解決方案,渲染速度幾乎可以和原生同步,用戶體驗好,并無縫對接了公司內(nèi)部運營系統(tǒng)及埋點曝光等功能。

2、頁面場景

頁面動態(tài)化技術(shù)是在區(qū)域動態(tài)化基礎(chǔ)上的進(jìn)一步擴(kuò)展,提供了頁面常用的列表組件、瀑布流組件、下拉刷新組件等,進(jìn)一步提供的混合路由模塊和以及沉浸式導(dǎo)航能力使動態(tài)化形成了區(qū)域到頁面級別的升級。對于業(yè)界跨端方案普遍面臨的埋點、曝光難題,我們設(shè)計實現(xiàn)了一套無侵入自動化埋點和曝光的協(xié)議接口,并在金融APP無縫對接了埋點、曝光通道。

3、未來適用的場景

通過進(jìn)一步擴(kuò)展APP級基礎(chǔ)能力,可用于一個完整APP的開發(fā)。

四、未來規(guī)劃

在渲染性能方向,探索抽取Flutter底層SKIA渲染引擎作為動態(tài)化的渲染引擎,進(jìn)一步提升渲染速度和渲染一致性,降低未來多端長期維護(hù)成本。

在DSL支持方向,基于Vue3的虛擬Dom接口分離設(shè)計,以及ReactNative最新的渲染流程架構(gòu)設(shè)計,為虛擬Dom技術(shù)思想打造的跨端框架對接多個前端DSL提供了空間,未來Vue3和React開發(fā)的項目可以結(jié)合動態(tài)化實現(xiàn)跨端,充分發(fā)揮動態(tài)化原生渲染優(yōu)勢,使前端業(yè)務(wù)低成本享受原生絲滑體驗。

五、寫在最后

動態(tài)化是一個涉及JavaScript、iOS、Android、Java、Harmony、Vue、Node、Webpack等眾多領(lǐng)域的綜合解決方案,我們有各個領(lǐng)域優(yōu)秀的小伙伴共同前行,大家如果想深入了解某個領(lǐng)域的具體實現(xiàn),千萬別忘了點贊+收藏,方便以后隨時閱讀和提出寶貴意見。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 京東
    +關(guān)注

    關(guān)注

    2

    文章

    1024

    瀏覽量

    49271
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    衛(wèi)星導(dǎo)航系統(tǒng)基帶偽完整系統(tǒng)解決方案

    本文旨在介紹種衛(wèi)星導(dǎo)航系統(tǒng)基帶偽的完整系統(tǒng)解決方案。
    發(fā)表于 09-06 09:42 ?1601次閱讀
    衛(wèi)星導(dǎo)航系統(tǒng)基帶偽<b class='flag-5'>碼</b>完整系統(tǒng)<b class='flag-5'>解決方案</b>

    西安“一碼通”再崩潰!真的只是網(wǎng)絡(luò)擁堵造成的嗎?

    電子發(fā)燒友網(wǎng)報道(文/李彎彎)1月4日,西安“一碼通”又發(fā)生故障了,直到當(dāng)天下午才逐漸恢復(fù)正常,根據(jù)陜西發(fā)布的消息,一碼通首頁顯示正常,但點擊不能順利進(jìn)入。有市民接到通知:全市核酸檢測應(yīng)急平臺因當(dāng)前
    的頭像 發(fā)表于 01-06 09:42 ?5579次閱讀

    如何使用STM32HAL庫來讀取UID唯一碼加密?

    如何使用STM32HAL庫來讀取UID唯一碼加密?
    發(fā)表于 11-26 07:39

    微捷發(fā)布增強版層次設(shè)計規(guī)劃解決方案

    微捷發(fā)布增強版層次設(shè)計規(guī)劃解決方案  微捷(Magma®)設(shè)計自動有限公司(納斯達(dá)克代碼:LAVA)日前發(fā)布了
    發(fā)表于 12-01 09:21 ?872次閱讀

    點量視頻加密機(jī)一碼軟件功安全易操作

    視頻加密機(jī)一碼可以實現(xiàn)5層加密2.客戶專屬私有協(xié)議3.防止多種軟硬件錄屏技術(shù)4.視頻盜用可追查5.統(tǒng)計視頻日志和報表等6.可定制播放器,播放器端可直接選擇管理課程7.視頻播放過程可插入問答、動畫
    發(fā)表于 10-31 17:11 ?887次閱讀

    微信上線“醫(yī)保電子憑證” 所有醫(yī)保業(yè)務(wù)場景將一碼通行

    1月13日消息,騰訊宣布“醫(yī)保電子憑證”上線,醫(yī)保繳費、醫(yī)保查詢、醫(yī)保買藥、醫(yī)保掛號……一碼通行,全都不是事兒。
    的頭像 發(fā)表于 01-13 14:09 ?2302次閱讀

    衛(wèi)健委通知:推進(jìn)健康全國一碼通行

    各地落實健康信息互認(rèn)機(jī)制和規(guī)則,明確跨地區(qū)流動人員健康信息在各地區(qū)可信可用,實現(xiàn)防疫健康統(tǒng)政策、統(tǒng)標(biāo)準(zhǔn)、全國互認(rèn)、
    的頭像 發(fā)表于 12-11 09:40 ?2708次閱讀

    春運期間推動健康全國一碼通行

    不知不覺,農(nóng)歷新年就要到了,不過針對當(dāng)前疫情情況下,國家也是做出了調(diào)整,春運期間推動健康全國一碼通行。
    的頭像 發(fā)表于 01-13 09:18 ?2348次閱讀

    鴻蒙系統(tǒng)如何創(chuàng)建防疫一碼通卡片

    創(chuàng)建“一碼通”服務(wù)卡片工程 ①安裝和配置 DevEco Studio 2.1 Release 安裝的鏈接: ? https://developer.harmonyos.com/cn/develop
    的頭像 發(fā)表于 08-20 10:13 ?4924次閱讀
    鴻蒙系統(tǒng)如何創(chuàng)建防疫<b class='flag-5'>一碼</b>通卡片

    健康防疫核驗體機(jī)、健康體機(jī)為防控數(shù)字發(fā)揮效能

    健康防疫核驗體機(jī)主要用于醫(yī)院、政務(wù)大廳、車站景區(qū)、便民服務(wù)中心和兩站一碼頭等人員密集場所的出入口防疫管控和精準(zhǔn)排查溯源,在防疫核驗的同時提升出入通行效率,避免聚集。相信在疫情常
    的頭像 發(fā)表于 03-03 16:37 ?950次閱讀
    健康<b class='flag-5'>碼</b>防疫核驗<b class='flag-5'>一</b>體機(jī)、健康<b class='flag-5'>碼</b>掃<b class='flag-5'>碼</b><b class='flag-5'>一</b>體機(jī)為防控數(shù)字<b class='flag-5'>化</b>發(fā)揮效能

    深圳遠(yuǎn)景達(dá)推出“多”防疫測溫健康解決方案

    為了更好地全方位防控疫情與方便人員的出入、管控,深圳市遠(yuǎn)景達(dá)物聯(lián)網(wǎng)技術(shù)有限公司推出了“多”防疫測溫健康解決方案以及RD40R健康
    的頭像 發(fā)表于 05-11 10:30 ?1209次閱讀
    深圳遠(yuǎn)景達(dá)推出“多<b class='flag-5'>碼</b>合<b class='flag-5'>一</b>”防疫測溫健康<b class='flag-5'>碼</b><b class='flag-5'>解決方案</b>

    福州上線新機(jī)器,可刷“峰會”、福建健康等實現(xiàn)一碼通行

    進(jìn)行掃描識別,實現(xiàn)“一碼通行”。據(jù)了解,該健康核驗設(shè)備是在第五屆數(shù)字中國建設(shè)峰會主辦方的統(tǒng)部署下,為福州積極打造可信數(shù)字身份應(yīng)用示范城市,而推進(jìn)基于可信數(shù)字
    的頭像 發(fā)表于 07-25 17:05 ?1108次閱讀
    福州上線新機(jī)器,可刷“峰會<b class='flag-5'>碼</b>”、福建健康<b class='flag-5'>碼</b>等實現(xiàn)<b class='flag-5'>一碼</b>通行

    河北健康“閘機(jī)式”電子哨兵解決方案 河北健康核驗解決方案定制開發(fā)

    河北健康“閘機(jī)式”電子哨兵解決方案,基于先進(jìn)的紅外非接觸式體溫檢測、健康驗證、人臉識別以及大數(shù)據(jù)等技術(shù),支持對接國家衛(wèi)健委健康防疫登記管理系統(tǒng),實現(xiàn)掃描河北健康
    的頭像 發(fā)表于 10-09 17:48 ?1303次閱讀
    河北健康<b class='flag-5'>碼</b>“閘機(jī)式”電子哨兵<b class='flag-5'>解決方案</b> 河北健康<b class='flag-5'>碼</b>核驗<b class='flag-5'>解決方案</b>定制開發(fā)

    上辦、一碼通辦,廣東多個應(yīng)用場景用上粵居人證核驗終端

    近日,廣東省多個縣市區(qū)的政務(wù)服務(wù)大廳、便民服務(wù)綜合窗口等多個應(yīng)用場景開始使用粵居人證核驗終端,實現(xiàn)了“上辦、一碼通辦”的便捷服務(wù)。這舉措旨在提高廣東省民生服務(wù)水平,加強社會治理能
    的頭像 發(fā)表于 06-19 16:46 ?914次閱讀
    <b class='flag-5'>碼</b>上辦、<b class='flag-5'>一碼</b>通辦,廣東多個應(yīng)用場景用上粵居<b class='flag-5'>碼</b>人證核驗終端

    工業(yè)讀解決方案在自動流水線上掃描條碼的應(yīng)用

    工業(yè)讀解決方案在自動流水線上的應(yīng)用主要包括以下幾個方面:1、提高生產(chǎn)效率和準(zhǔn)確性工業(yè)讀器嵌入在工業(yè)流水線中,無需人工掃描,大大提高了效率,節(jié)約了人力成本。讀
    的頭像 發(fā)表于 11-20 16:28 ?687次閱讀
    工業(yè)讀<b class='flag-5'>碼</b>器<b class='flag-5'>解決方案</b>在自動<b class='flag-5'>化</b>流水線上掃描條碼的應(yīng)用