亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        ReactNative之基于引用共享組件開發(fā)實踐

        2020-07-23 06:58:56黃磊盧方偉肖偉
        視界觀·上半月 2020年7期
        關(guān)鍵詞:跨平臺

        黃磊 盧方偉 肖偉

        摘? ? 要:React原生組件機制,并提出基于ReactNative跨平臺組件開發(fā)規(guī)范的,將組件映射到相同的原生引用對象,實現(xiàn)同地址的組件的共享。

        關(guān)鍵詞:共享組件;ReactNatve;狀態(tài)管理;混合開發(fā);組件引用;跨平臺

        引言

        隨著移動互聯(lián)網(wǎng)的快速發(fā)展,尤其是智能手機設(shè)備硬件的更新?lián)Q代,用戶的體驗和層次的魚龍混雜,讓手機端開發(fā)者和平臺大大增加了開發(fā)成本。實現(xiàn)同樣的功能,因此保證開發(fā)成本和體驗的一致性變成了一個核心點,本文著重講述基于ReactNative跨平臺基礎(chǔ)上,解決多個組件之間的內(nèi)存共享問題,從根本上提升App體驗。

        一 RN介紹

        React Native(以下簡稱RN)是由Facebook公司2015年推出的開源的跨平臺移動應(yīng)用開發(fā)框架,可以實現(xiàn)基于JS開發(fā)應(yīng)用,并可同時運行于IOS端和安卓端兩大主流的手機操作系統(tǒng),真正實現(xiàn)了一次編碼,多平臺運行,RN最終編譯成的是一個真正的移動應(yīng)用。RN所使用的基礎(chǔ)UI組件和原生是完全一致,JS在其中的作用就是跟原生UI關(guān)聯(lián)起來,從而生產(chǎn)出整個App的業(yè)務(wù)邏輯。

        二 組件原理

        RN框架主要分三層,原生層、通信層、業(yè)務(wù)層,原生層主要提供了UI渲染器控制器以及一些其他的基礎(chǔ)功能庫,均被封裝成RN模塊、注冊、橋等。通信層主要執(zhí)行原生與JS的通信工作。業(yè)務(wù)層主要實現(xiàn)的是跟業(yè)務(wù)相關(guān)的組件和工具庫使用,通過JS編寫的虛擬Dom來構(gòu)建模塊和組件,虛擬Dom是內(nèi)存中的一種輕量級表現(xiàn)形式,可以通過不同的渲染引擎生成具有一致性的UI。并且借助React的狀態(tài)管理特性,對原生UI的屬性和邏輯進行更新。

        三 組件共享原理

        RN組件分為JS組件和原生組件,普通的RN組件并沒有存在組件共享問題,但由于RN的組件的狀態(tài)管理都有UI控制器控制器管理,原生的布局控制已經(jīng)完全被接管,所以原則上是不能通過原生方法去改變組件的布局,所有的邏輯都要在JS端完成。目前開放的所有RN組件并沒有提供真正的Native共享功能,現(xiàn)有的開發(fā)者開源的共享組件方案也并非是真實組件共享,只是基于同一個虛擬Dom的原生組件復(fù)制,映射到內(nèi)存地址是完全不同的兩個Native對象,并非真正意義上的同一個對象,也可以說是同引用(內(nèi)存中同一地址)。

        四 共享組件實現(xiàn)

        在RN框架基礎(chǔ)上,遵循RN的組件開發(fā)規(guī)范,我們將創(chuàng)建一個原生組件,這個原生組件既是源組件也是鏡像組件。這個組件具有兩個特殊屬性源標(biāo)記和目標(biāo)標(biāo)記,在觸發(fā)共享時這兩個標(biāo)記要必須相同,它們是共享的一個橋梁。在Native端有一個臨時的存儲對象,當(dāng)觸發(fā)共享時,源組件對象會被臨時存儲到存儲中,當(dāng)鏡像組件開始渲染時會將源組件對象從存儲中取出,并且放置到鏡像組件中作為子組件。雖然作為鏡像組件的子組件,它的狀態(tài)管理卻不能被鏡像組件所接管,它還是由源組件所控制,所以要通過鏡像組件的狀態(tài)管理通過JS再傳給源組件,源組件去動態(tài)更改源組件對象的狀態(tài)和尺寸。

        我們將創(chuàng)建3個原生類文件,分別是模塊管理、組件管理器、原生組件,兩個JS的React原生組件(源組件和鏡像組件),模塊管理主要負(fù)責(zé)擴展RN組件或者模塊的控制管理,組件管理是對Native和JS端的屬性、方法、通信、事件等統(tǒng)一管理,原生組件則是基于RN組件的原生View。模塊管理主要用于RN擴展庫管理,組件管理器會創(chuàng)建真實的View實例,組件類主要用于組件的實體UI部分,其中會處理原生組件的具體功能,包含組件對象掛起以及放置。JS端當(dāng)源組件設(shè)置源的時候,即將源組件的視圖置為掛起狀態(tài),原生組件則體現(xiàn)為將View臨時存儲到存儲中。當(dāng)鏡像組件尺寸需要發(fā)生變化時,能夠同步尺寸給源組件,然后通過源的控制器去控制View的尺寸變化。

        五 組件使用

        基于RN的三方視頻組件并不能很好的支持全屏,或者說不能自定義全屏,在自定義播放器UI后,全屏模式并不能展示我自定義的UI組件,例如控制進度條、彈幕、分享、評論等。再如WebView早期的版本并沒有全屏的支持,IOS本身目前版本也沒有支持,利用共享組件就可以創(chuàng)建一個全屏鏡像組件,就將WebView共享為全屏狀態(tài)。而且在鏡像組件中我們可以處理屏幕旋轉(zhuǎn),以及組件位置的更換。

        源組件實現(xiàn)代碼部分,點擊掛起源組件,在執(zhí)行掛起操作的同時生成一個唯一的源,可將這個唯一的源攜帶到任何一個組件作為源。當(dāng)鏡像組件渲染時源組件的View就會自動將源組件的View添加作為子View展示出來,當(dāng)鏡像組件釋放時會觸發(fā)Native共享組件的釋放,同時會將鏡像原生組件的子View重新恢復(fù)到源組件中,這樣就同步了RN的生命周期。

        六 結(jié)論

        RN現(xiàn)在是最火的跨平臺框架之一,但是還是有很多未解決的問題。這就是這篇文章的價值所在。以上就是基于引用的共享組件實現(xiàn)過程,我們已經(jīng)將這個共享組件實際應(yīng)用于項目中?;谝玫墓蚕斫M件簡單但是不平凡,它的作用大大的超過了代碼量本身,它是滄海一粟但是卻是眾多組件的一個亮點。

        參考文獻:

        [1]焦鋒.react native在app開發(fā)中的應(yīng)用研究[J].數(shù)字技術(shù)與應(yīng)用,2017(06):109.

        [2]嚴(yán)新巧.基于移動開發(fā)現(xiàn)狀探討React Native[J].電腦知識與技術(shù),2016,12(32):76-77+82.

        [3]周雪.現(xiàn)代跨平臺開發(fā)技術(shù)在移動終端層面的應(yīng)用.現(xiàn)代工業(yè)經(jīng)濟和信息化,2019,9(1):73-74.

        [4]趙林靜.跨平臺移動應(yīng)用開發(fā)的優(yōu)勢與不足.信息與電腦,2018(9):123-124.

        [5]張龍,張晗.跨平臺響應(yīng)式前端框架技術(shù)的研究與應(yīng)用.電子設(shè)計工程,2018,26(22):6-9.

        [6]王欣,曲萍.移動互聯(lián)網(wǎng)混合開發(fā)技術(shù)的方向.科技資訊,2018,16(1):8-8.

        猜你喜歡
        跨平臺
        跨層級網(wǎng)絡(luò)、跨架構(gòu)、跨平臺的數(shù)據(jù)共享交換關(guān)鍵技術(shù)研究與系統(tǒng)建設(shè)
        一款游戲怎么掙到全平臺的錢?
        電腦報(2021年11期)2021-07-01 08:10:05
        潛力雙跨平臺:進階:誰將跨入下一個“十大”?
        跨平臺APEX接口組件的設(shè)計與實現(xiàn)
        基于C++語言的跨平臺軟件開發(fā)的設(shè)計
        基于C++語言的跨平臺軟件開發(fā)
        移動互聯(lián)網(wǎng)應(yīng)用跨平臺開發(fā)
        一種虛擬現(xiàn)實應(yīng)用程序跨平臺方法的研究
        基于QT的跨平臺輸電鐵塔監(jiān)控終端軟件設(shè)計與實現(xiàn)
        基于OPC跨平臺通信的電機監(jiān)測與診斷系統(tǒng)
        日本免费播放一区二区| 欧美另类在线视频| 无码人妻中文中字幕一区二区| 高清国产精品一区二区| 色哟哟亚洲色精一区二区| 国精产品推荐视频| 午夜婷婷国产麻豆精品| 久久这里只有精品黄色| 婷婷久久精品国产色蜜蜜麻豆 | 免费国产黄网站在线观看可以下载| 中文幕无线码中文字蜜桃| 国产西西裸体一级黄色大片| 久久亚洲中文字幕伊人久久大| 97在线视频免费人妻| 色拍拍在线精品视频| 人妻av午夜综合福利视频| 国产亚洲精品在线视频| 国内精品人妻无码久久久影院| 国产精品深田咏美一区二区 | 隔壁的日本人妻bd高清中字| 欧美肥婆性猛交xxxx| 婷婷五月综合缴情在线视频| 国产码欧美日韩高清综合一区| 日本免费视频一区二区三区| 久久久久亚洲av无码专区喷水 | 国产女人av一级一区二区三区| 国产精品高清一区二区三区不卡 | 日本最新免费二区三区| 天天躁人人躁人人躁狂躁| 国内自拍第一区二区三区 | 六月丁香婷婷色狠狠久久| 色婷婷一区二区三区四区| 亚洲天堂精品一区入口| 国产探花在线精品一区二区| 亚洲色成人网一二三区| 久久99免费精品国产 | 国产成人精品日本亚洲专区6 | 国产91在线|亚洲| 免费观看人妻av网站| 性高湖久久久久久久久| 亚洲一区二区婷婷久久|