999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

ReactNative之基于引用共享組件開發實踐

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

黃磊 盧方偉 肖偉

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

關鍵詞:共享組件;ReactNatve;狀態管理;混合開發;組件引用;跨平臺

引言

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

一 RN介紹

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

二 組件原理

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

三 組件共享原理

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

四 共享組件實現

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

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

五 組件使用

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

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

六 結論

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

參考文獻:

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

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

[3]周雪.現代跨平臺開發技術在移動終端層面的應用.現代工業經濟和信息化,2019,9(1):73-74.

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

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

[6]王欣,曲萍.移動互聯網混合開發技術的方向.科技資訊,2018,16(1):8-8.

猜你喜歡
跨平臺
跨層級網絡、跨架構、跨平臺的數據共享交換關鍵技術研究與系統建設
一款游戲怎么掙到全平臺的錢?
電腦報(2021年11期)2021-07-01 08:10:05
潛力雙跨平臺:進階:誰將跨入下一個“十大”?
跨平臺APEX接口組件的設計與實現
測控技術(2018年9期)2018-11-25 07:44:58
基于C++語言的跨平臺軟件開發的設計
數碼世界(2017年12期)2017-12-28 15:45:13
基于C++語言的跨平臺軟件開發
移動互聯網應用跨平臺開發
一種虛擬現實應用程序跨平臺方法的研究
基于QT的跨平臺輸電鐵塔監控終端軟件設計與實現
基于OPC跨平臺通信的電機監測與診斷系統
主站蜘蛛池模板: 国产亚洲精品自在久久不卡| 亚洲一区黄色| 国产SUV精品一区二区6| 在线不卡免费视频| a毛片免费在线观看| 尤物精品视频一区二区三区| 在线精品视频成人网| 99久久精品视香蕉蕉| 不卡网亚洲无码| 国产精品深爱在线| 国产区网址| 国产在线91在线电影| 欧美一级一级做性视频| 亚洲精品午夜天堂网页| 精品伊人久久久香线蕉| 国产欧美在线观看视频| 国产精品成人久久| 亚洲国语自产一区第二页| 91精品啪在线观看国产91| 日本免费a视频| 亚洲一区国色天香| 中文字幕久久精品波多野结| 蜜桃视频一区二区三区| 国产乱人视频免费观看| 久久久久久久久18禁秘 | 欧美伦理一区| 欧美性天天| 在线观看国产网址你懂的| 亚洲精品手机在线| 日本久久久久久免费网络| 亚洲香蕉在线| 无码精品国产VA在线观看DVD| 国产精品福利在线观看无码卡| 久久综合五月| 无码专区在线观看| 成人精品午夜福利在线播放| 亚洲精品成人福利在线电影| 自慰高潮喷白浆在线观看| 18禁黄无遮挡网站| 国产91熟女高潮一区二区| 中文字幕在线看| 亚洲综合色区在线播放2019| 日韩美女福利视频| 亚洲最大情网站在线观看| 日韩AV无码免费一二三区| 99re精彩视频| 青青网在线国产| 亚洲日韩精品综合在线一区二区| 免费a级毛片18以上观看精品| 亚洲AV免费一区二区三区| 天天综合网色中文字幕| 久久网欧美| 国产精品欧美在线观看| 国产性爱网站| 久久青草热| 奇米精品一区二区三区在线观看| 色哟哟国产精品一区二区| 高h视频在线| 免费一看一级毛片| 久久这里只有精品国产99| 亚洲精品波多野结衣| 日本三级黄在线观看| 99在线免费播放| 亚洲免费三区| 亚洲六月丁香六月婷婷蜜芽| 国产理论最新国产精品视频| 性网站在线观看| 国产一级无码不卡视频| 欧美日韩国产高清一区二区三区| 操国产美女| 国模极品一区二区三区| 国产成人福利在线视老湿机| 成人av专区精品无码国产| 久久久久人妻一区精品色奶水| 国产电话自拍伊人| 玖玖免费视频在线观看| 国产三级精品三级在线观看| 草草影院国产第一页| 中文字幕亚洲综久久2021| 亚洲三级色| 亚洲av无码牛牛影视在线二区| 99热这里只有精品5|