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

來(lái)自QQ團(tuán)隊(duì)的 React Native For Android 架構(gòu)

移動(dòng)開(kāi)發(fā) Android
Facebook 在2015.9.15發(fā)布了 React Native for Android,把JavaScript 開(kāi)發(fā)技術(shù)擴(kuò)展到了Android平臺(tái)。React Native 讓開(kāi)發(fā)者使用 JavaScript 和 React 編寫(xiě)應(yīng)用,利用相同的核心代碼就可以創(chuàng)建 基于Web,iOS 和 Android 平臺(tái)的原生應(yīng)用。本文將淺析Android React的架構(gòu)及相關(guān)基礎(chǔ)知識(shí)。

Facebook 在2015.9.15發(fā)布了 React Native for Android,把JavaScript 開(kāi)發(fā)技術(shù)擴(kuò)展到了Android平臺(tái)。React Native 讓開(kāi)發(fā)者使用 JavaScript 和 React 編寫(xiě)應(yīng)用,利用相同的核心代碼就可以創(chuàng)建 基于Web,iOS 和 Android 平臺(tái)的原生應(yīng)用。本文將淺析Android React的架構(gòu)及相關(guān)基礎(chǔ)知識(shí)。

環(huán)境搭建及調(diào)試相關(guān)知識(shí)參考官網(wǎng)文檔(https://facebook.github.io/react-native/)即可,本文不再贅述

[[151556]]

一.React架構(gòu)分析

1)層次架構(gòu):

Java層:java層為邏輯入口,啟動(dòng)C++層的javascript解析器,執(zhí)行js通過(guò)c++傳遞來(lái)的渲染指令,從而構(gòu)建NativeUI等。java層依賴于眾多優(yōu)秀開(kāi)源庫(kù),在圖片處理使用的是Fresco,網(wǎng)絡(luò)通信使用的是okhttp,當(dāng)然還有眾多工具類,如Json解析工具jacksonAnimation知名開(kāi)源庫(kù)NineOldAndroids,小而全的底層工具類bolts等,在java層均封裝為Modulejava層核心jar包是react-native.jar,封裝了眾多上層的interface,如ModuleRegistrybridge等,下面會(huì)以App的啟用過(guò)程,完整分析java層的架構(gòu)。

C++層:c++層最主要是封裝了JavaScriptCore,執(zhí)行對(duì)js的解析。基于JavaScriptCoreWeb開(kāi)發(fā)者可以盡情使用ES6的新特性,如class、箭頭操作符等,而且 React Native運(yùn)行在JavaScriptCore中的,完全不存在瀏覽器兼容的情況。Bridge橋接了java <> js 通信的核心接口。JSLoader主要是將來(lái)自assets目錄的或本地file加載到j(luò)avascriptCore,再通過(guò)JSCExectutor解析js文件。

Js層:主要處理事件分發(fā)及UI Layout,主要有以下幾個(gè)部件:

Component:Js層通js/jsx編寫(xiě)的Virtual Dom來(lái)構(gòu)建Component或Module,Virtual DOM是DOM在內(nèi)存中的一種輕量級(jí)表達(dá)方式,可以通過(guò)不同的渲染引擎生成不同平臺(tái)下的UI。component的使用在 React 里極為重要, 因?yàn)閏omponent的存在讓計(jì)算 DOM diff 更高效。

Lifecycle&Data:React 組件通過(guò)內(nèi)部的 state 變量控制生命周期及事件回調(diào)。如getInitialState方法用于定義組件初始狀態(tài),后續(xù)組件可通過(guò) this.state 屬性讀取該狀態(tài)。當(dāng)事件觸發(fā)(或者主動(dòng)調(diào)用setState方法更新數(shù)據(jù))導(dǎo)致?tīng)顟B(tài)變化,this.setState 方法就修改狀態(tài)值,每次修改以后,自動(dòng)調(diào)用 this.render 方法,重新渲染組件。

Layout:React使用css-layout,css-layout使用javascript實(shí)現(xiàn)了flexbox ,不依賴于DOM,能譯成Object-C或者Java,最終達(dá)到跨平臺(tái)的展示目的,但暫時(shí)不支持css3,暫時(shí)只能支持簡(jiǎn)單的布局和普通的動(dòng)畫(huà)。

2)Js與Java通信機(jī)制:

在Java層與Js層的bridge分別存有相同一份模塊配置表,Java與Js互相通信時(shí),通過(guò)bridge里的配置表將所調(diào)用模塊方法轉(zhuǎn)為{moduleID,methodID,args}的形式傳遞給處理層,處理層通過(guò)bridge的模塊配置表找到對(duì)應(yīng)的方法執(zhí)行,如果有callback,則回傳給調(diào)用層。在了解ReactAndroid APP啟動(dòng)后,第三部分會(huì)詳細(xì)講這套機(jī)制。


二.從應(yīng)用啟動(dòng)到頁(yè)面加載完成分析

上圖為 Android React 加載過(guò)程的解析,下面先概要描述上層核心類及原理,再梳理核心的啟用步驟。

Core Class

1.ReactInstanceManager:主要是用來(lái)創(chuàng)建及管理Catalyst的實(shí)例的上層接口,控制開(kāi)發(fā)調(diào)試,生命周期與ReactRootView所在activity保持一致。

2.ReactRootView為啟動(dòng)入口核心類,負(fù)責(zé)監(jiān)聽(tīng)及分發(fā)事件并重新渲染元素,App啟動(dòng)后,其將作為App的root view。

3.CatalystInstance***異步JSCAPI封裝類,提供Java與Js互通的環(huán)境,通過(guò)ReactBridge將Svr的Js Bundle傳送到Js引擎。

4.NativeModuleRegistry:Java層模塊注冊(cè)表,即暴露給Js的API集合。

5.JavascriptModuleRegistryJs層模塊注冊(cè)表,負(fù)責(zé)將所有JavaScriptModule注冊(cè)到CatalystInstance,通過(guò)Java動(dòng)態(tài)代理調(diào)用到Js。

6.CoreModulePackage:定義核心框架模塊,創(chuàng)建NativeModules&JsModules。

啟動(dòng)過(guò)程的解析:

1.ReactInstanceManager時(shí)會(huì)配置應(yīng)用所需的java模塊與js模塊之后,通過(guò)ReactRootView的startReactApplication啟動(dòng)APP。

2.在創(chuàng)建ReactInstanceManager同時(shí)會(huì)創(chuàng)建用于加載JsBundle的JSBundlerLoader,并傳遞給CatalystInstance。

3.CatalystInstance會(huì)創(chuàng)建Java模塊注冊(cè)表及Javascript模塊注冊(cè)表,并遍歷實(shí)例化模塊。

4.CatalystInstance通過(guò)JSBundlerLoader向Node Svr請(qǐng)求Js Bundle,并傳遞給JSCJavaScriptExectutor,***傳遞給javascriptCore,再通過(guò)ReactBridge通知ReactRootView完成渲染。

 

三.JsJava通信機(jī)制

Java與Js之間的調(diào)用,是以兩邊存在兩邊存在同一份模塊配置表,最終均是將調(diào)用轉(zhuǎn)化為{moduleID, methodID,callbackID,args},處理端在模塊配置表里查找注冊(cè)的模塊與方法并調(diào)用。

Java -> Js Java通過(guò)注冊(cè)表調(diào)用到CatalystInstance實(shí)例,透過(guò)ReactBridge的jni,調(diào)用到Onload.cpp中的callFunction,***通過(guò)javascriptCore,調(diào)用BatchedBridge.js,根據(jù)參數(shù){moduleID,methodID}require相應(yīng)Js模塊執(zhí)行。詳細(xì)流程如下圖。

Js -> JavaJS不主動(dòng)傳遞數(shù)據(jù)調(diào)用Java。在需要調(diào)用調(diào)Java模塊方法時(shí),會(huì)把參數(shù){moduleID,methodID等數(shù)據(jù)存在MessageQueue中,等待Java的事件觸發(fā),再把MessageQueue中的{moduleID,methodID返回給Java,再根據(jù)模塊注冊(cè)表找到相應(yīng)模塊處理。詳細(xì)流程如下圖。

 

四.總結(jié)

React將UI分解成組件,廢棄了模板,統(tǒng)一視圖邏輯標(biāo)簽,使構(gòu)建的視圖更容易擴(kuò)展和維護(hù),Vitual Dom更是其提高性能的亮點(diǎn),React 中的Dom并不保證馬上影響真實(shí)的Dom,React會(huì)等到事件循環(huán)結(jié)束,利用diff算法,通過(guò)當(dāng)前新Dom樹(shù)與之前的Dom樹(shù)作比較,計(jì)算出最小的步驟更新真實(shí)的DOM

Android React的推出更使得利用相同的核心代碼就可以創(chuàng)建 Web,iOS 和 Android 平臺(tái)的原生應(yīng)用,但目前Android React的HelloWorld基礎(chǔ)庫(kù)將近7m,落地項(xiàng)目仍需要精簡(jiǎn),目前我們正在精簡(jiǎn)中。當(dāng)然,對(duì)于Andriod版本也有考驗(yàn),僅支持 Android 4.1 (API 16) 以上的版本(iOS 7.0),當(dāng)然,在系統(tǒng)不支持情況下,H5可以作為后備方案。

我們后續(xù)會(huì)持續(xù)關(guān)注Android React的動(dòng)態(tài),向大家繼續(xù)推送更多關(guān)于Android React的文章。(底部有關(guān)于Android React所有類庫(kù)的描述)

責(zé)任編輯:chenqingxiang 來(lái)源: QQ空間終端開(kāi)發(fā)團(tuán)隊(duì)
相關(guān)推薦

2015-09-22 09:50:36

FacebookAndroid

2016-11-23 16:48:20

react-nativandroidjavascript

2022-02-28 10:30:03

架構(gòu)代碼Native

2020-01-07 15:40:43

React前端技術(shù)準(zhǔn)則

2016-10-13 19:01:59

React NativUbuntu

2024-10-31 08:35:53

2018-06-13 16:38:33

React Nativ組件Android

2024-07-08 00:00:07

2023-06-24 17:09:06

React前端

2016-08-12 13:55:06

2019-11-13 10:35:27

React Conf前端總結(jié)

2016-08-12 08:49:46

React NativFacebookNative

2017-09-11 14:35:34

編輯器開(kāi)發(fā)環(huán)境React

2015-10-08 14:32:19

微信Apk瘦身

2019-08-19 08:14:52

深度鏈接iOSAndroid

2017-01-09 16:40:07

React NatiAndroid 開(kāi)發(fā)

2017-03-21 21:37:06

組件UI測(cè)試架構(gòu)

2017-03-09 13:29:04

ReactNative JSPatch

2024-02-20 01:53:01

ReactFlutter開(kāi)發(fā)

2016-08-15 13:34:37

React NativiOSjs入口
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

青青伊人久久| 巨骚激情综合| 影音先锋中文字幕一区| 亚洲精品资源美女情侣酒店 | www日韩tube| 国产一区二区福利| 欧洲中文字幕国产精品| 国产白丝一区二区三区| 国产精品tv| 欧美色国产精品| www.亚洲视频.com| 成年人视频在线免费观看| 国产成人综合自拍| 2023亚洲男人天堂| 免费看一级一片| 欧美日韩中文字幕一区二区三区| 日韩一区二区三区视频在线 | 久草在线资源福利站| 欧美国产激情二区三区| 国产青春久久久国产毛片| 亚洲天堂狠狠干| 99精品国产在热久久| 久久久www成人免费精品张筱雨| 艳妇乳肉亭妇荡乳av| 91精品国产色综合久久不卡粉嫩| 精品久久香蕉国产线看观看亚洲| 一级日韩一区在线观看| 欧美日本韩国一区二区| 国产91精品免费| 成人黄色免费在线观看| 国产一级片免费视频| 在线看片日韩| 欧美激情xxxx| 午夜精品一区二区三级视频| 精品国产91| 精品香蕉一区二区三区| 免费看黄色片的网站| 日本精品视频| 在线成人av网站| 三上悠亚在线一区| 欧美日韩五码| 色域天天综合网| 久久精品国产精品亚洲色婷婷| 日韩经典av| 亚洲欧美综合在线精品| 亚洲春色在线视频| 成年人在线视频| 久久综合九色综合97婷婷女人 | 一区二区欧美视频| 国产精品波多野结衣| 天堂资源在线中文| 国产精品久久久久永久免费观看 | 精品国产乱码久久久久夜深人妻| 亚洲天堂网站| 在线不卡免费av| 国产传媒免费观看| 国产激情综合| 日韩午夜电影av| 久久精品一二三四| silk一区二区三区精品视频| 日韩精品一区二区三区老鸭窝| 激情文学亚洲色图| 91成人福利| 亚洲国产毛片完整版| 日本精品一二三区| 欧美丝袜美腿| 亚洲欧美在线一区二区| 老头老太做爰xxx视频| 精品国产乱码久久久久久蜜坠欲下 | 国产精品亚洲二区在线观看 | 午夜精品久久久久久久| 日日摸日日碰夜夜爽无码| 亚洲插插视频| 欧美在线小视频| 最新天堂在线视频| 奇米一区二区| 亚洲国产精品久久久久秋霞不卡| 黄色性生活一级片| 欧美亚洲精品在线| 久久精品久久久久久| 久久中文字幕无码| 国产农村妇女精品一二区| 国产精品6699| av av片在线看| 成人高清视频在线观看| 人偷久久久久久久偷女厕| аⅴ资源新版在线天堂| 亚洲乱码国产乱码精品精98午夜| 欧美黑人在线观看| 国产私拍福利精品视频二区| 欧美色涩在线第一页| 熟妇无码乱子成人精品| 少妇高潮一区二区三区| 中文国产成人精品| 亚洲欧美一区二区三区四区五区| 亚洲精选一区| 成人h片在线播放免费网站| www.天堂av.com| 久久久www免费人成精品| 亚洲国产精品女人| 免费观看亚洲| 欧美一区二区三区免费观看视频| 久久精品综合视频| 午夜精品一区二区三区国产| 午夜精品一区二区三区在线视频| 小泽玛利亚一区二区三区视频| 国产精品亚洲专一区二区三区 | 国产精品久久久久久影视| 亚洲在线精品视频| 99精品欧美一区二区三区小说| 亚洲精品人成| 亚洲电影观看| 精品欧美黑人一区二区三区| 三区四区在线观看| 亚洲狠狠婷婷| 国产色视频一区| 日本福利片高清在线观看| 亚洲精选视频在线| wwww.国产| 私拍精品福利视频在线一区| 免费97视频在线精品国自产拍| 中文字幕 国产精品| 成人高清视频在线观看| 青青草视频在线视频| 成人免费毛片嘿嘿连载视频…| 亚洲精品电影网| 免费网站看av| 国产精品亚洲午夜一区二区三区| 五月天丁香综合久久国产| 亚洲精品88| 亚洲精品按摩视频| 久久国产精品波多野结衣| 国产最新精品精品你懂的| 任我爽在线视频精品一| 成人免费看黄| 亚洲精品日韩欧美| 成年免费在线观看| 成人高清av在线| 成人午夜免费在线视频| 国产精品一级在线观看| 波霸ol色综合久久| 亚洲图片在线播放| 国产精品久久久久aaaa樱花| 久久久久国产精品熟女影院| 天天做夜夜做人人爱精品| 91国产视频在线| 五月天激情婷婷| 在线一级成人| www.在线欧美| 四虎精品欧美一区二区免费| 亚洲成人精品综合在线| 神马久久久久久| 超碰在线免费97| 国产精品热久久久久夜色精品三区| 日韩有码免费视频| 欧洲杯什么时候开赛| 国产精国产精品| 91美女视频在线| 欧美日韩久久不卡| 九九热视频在线免费观看| 精品亚洲成a人在线观看| 黄瓜视频免费观看在线观看www | 日本a级在线| 欧美日韩mp4| 精品欧美一区二区久久久久| 国产91精品久久久久久久网曝门 | 欧美性猛交xxxx黑人猛交| 亚洲一区二区在线免费| 亚洲欧美日韩国产| 日本一区视频在线观看免费| 69堂精品视频在线播放| 日日噜噜噜夜夜爽亚洲精品| 国产欧美综合视频| 亚洲国产视频a| 久久精品老司机| 美女任你摸久久| 成人午夜免费剧场| 欧美亚洲色图校园春色| 国产精品wwww| 特级毛片在线| 亚洲免费视频网站| 国产精品久久久久久久成人午夜 | 天堂а√在线中文在线 | 亚洲国产成人久久综合一区| 国产成人在线视频观看| 国产精品久久久久三级| 国产精品熟妇一区二区三区四区 | 国产精品99一区| 97欧美精品一区二区三区| 中文文字幕一区二区三三| 亚洲欧美日韩一区| 国产偷人妻精品一区| 欧美aaaaa成人免费观看视频| 香蕉视频在线网址| 亚洲va久久久噜噜噜久久| 成人精品久久久| 182在线视频观看| 中文字幕亚洲一区二区三区| 性中国古装videossex| 色婷婷久久久亚洲一区二区三区| 欧美偷拍第一页| 久久精品人人做人人综合| 欧美色图校园春色| 久久精品女人| www.av毛片| 久久一区二区三区电影| 国模精品一区二区三区| 在线观看亚洲精品福利片| 久久精品成人欧美大片| 国产专区在线播放| 亚洲成人av片在线观看| 国产精品久久婷婷| 91久久国产最好的精华液| 麻豆一区产品精品蜜桃的特点| 国产精品色噜噜| av直播在线观看| 国产91丝袜在线观看| 视色视频在线观看| 免费亚洲一区| 樱花影视一区二区| 最新中文字幕视频| 成人自拍视频在线观看| 国产三级生活片| 视频一区中文字幕| 国产黄色片免费在线观看| 综合精品久久| 夜夜爽99久久国产综合精品女不卡| 蜜桃一区av| 9a蜜桃久久久久久免费| 电影91久久久| 成人福利免费观看| 日本精品裸体写真集在线观看| 97国产suv精品一区二区62| 成人影院www在线观看| 伊人久久久久久久久久| 欧美在线一卡| 亚洲美女性生活视频| 少妇av在线播放| 欧美大片顶级少妇| 国产福利第一页| 91麻豆精品国产91久久久使用方法| 欧美日韩一级黄色片| 欧美视频一二三| 精品成人免费视频| 亚洲成av人**亚洲成av**| 强行糟蹋人妻hd中文| **欧美大码日韩| 永久免费看mv网站入口| 亚洲人成精品久久久久久| 天海翼在线视频| 亚洲情趣在线观看| 男女免费视频网站| 亚洲影院免费观看| 91免费观看| 成人免费看片| 久久夜色精品国产亚洲aⅴ| 视频一区二区三区不卡| 伊人伊人伊人久久| eeuss影院www在线播放| 中国日韩欧美久久久久久久久| 五月天婷婷在线视频| 超薄丝袜一区二区| 黄色影院在线看| 欧美亚洲在线视频| 亚洲天堂一区二区| 国产精自产拍久久久久久| 97久久中文字幕| 国产超碰91| 色婷婷狠狠五月综合天色拍| 日韩视频精品| 综合精品久久| 好吊妞无缓冲视频观看| 石原莉奈一区二区三区在线观看| 手机视频在线观看| 国产一区二区精品久久91| www.男人天堂| 久久中文娱乐网| ass极品国模人体欣赏| 亚洲精品日日夜夜| 日韩免费在线视频观看| 在线免费一区三区| 国产精品日韩无码| 亚洲国产成人久久综合| 99se视频在线观看| 欧美老女人在线视频| 国产在线观看www| 国产乱肥老妇国产一区二| 天堂av一区| 明星裸体视频一区二区| 久久激情电影| 免费国产a级片| 免费看欧美美女黄的网站| 久久久久国产免费| 国产亚洲成aⅴ人片在线观看| 五月天av网站| 欧美色视频日本高清在线观看| 国产精品久久婷婷| 亚洲欧美综合精品久久成人| a级在线观看| 国产成人短视频| 一区二区三区免费在线看| 欧美午夜精品久久久久免费视 | 91天天综合| 国产精品区一区二区三在线播放 | 26uuu精品一区二区三区四区在线| 成人无码av片在线观看| 亚洲一区在线观看视频| 在线免费看毛片| 精品无人区乱码1区2区3区在线 | 一级特黄大欧美久久久| 中文字幕在线日本| 日韩h在线观看| 日本无删减在线| 国产精品偷伦一区二区| 亚洲欧美成人vr| 99国产精品白浆在线观看免费| 蜜臀av一区二区| 成年人网站免费看| 性久久久久久久久久久久| 国产乱淫a∨片免费视频| 一区二区三区四区精品| 国产伦子伦对白在线播放观看| 3d动漫啪啪精品一区二区免费 | 日韩一区av在线| 婷婷激情一区| 久久国产一区二区| 国内成人在线| 精品人妻一区二区三区免费| 国产精品免费看片| 成人免费视频国产免费| 亚洲精品久久久一区二区三区 | 婷婷色在线视频| 欧美激情一二三| 久久久久九九精品影院| 亚洲香蕉成人av网站在线观看| 国产精品一区二区人妻喷水| 亚洲人成精品久久久久| 91麻豆国产视频| 尤物九九久久国产精品的特点| 亚洲性受xxx喷奶水| 欧美aaaaa喷水| 亚洲一区图片| 久久久亚洲av波多野结衣| 精品二区三区线观看| 免费av一级片| 久久久免费电影| 欧美aaaaa级| 国产免费黄色小视频| 99久久精品国产一区二区三区| 国产对白videos麻豆高潮| 亚洲第一在线视频| 国产自产自拍视频在线观看| 国产亚洲精品美女久久久m| 伊人久久综合| 免费的av网站| 一本久久精品一区二区| 丁香在线视频| 国产精品影院在线观看| 99久久99久久精品国产片桃花 | 国产欧美123| 东方欧美亚洲色图在线| 日韩欧美国产亚洲| 亚洲美女av在线播放| 在线看欧美视频| 伊人色综合影院| 国产成人综合网| 亚欧视频在线观看| 国产一区二区三区网站| 欧美成人aaa| 真实国产乱子伦对白视频| 99久久国产综合色|国产精品| 国产成人精品网| 色青青草原桃花久久综合 | 男女羞羞视频在线观看| 国产日韩亚洲精品| 爽好久久久欧美精品| 国产精品麻豆一区| 精品久久久久99| 神马久久资源| 中文字幕欧美人与畜| 国产成人精品www牛牛影视| 久草国产精品视频| 国产一区二区动漫| 国产乱码精品一区二区三区亚洲人| 丁香六月激情网| 国产免费成人在线视频| a天堂视频在线| 91av在线不卡| 久久激情电影| av在线播放网址| 欧美精品乱码久久久久久按摩| 国产啊啊啊视频在线观看| 天天综合狠狠精品| 国产成人av电影在线| 久久久精品毛片| 欧美精品videos| 日韩精品dvd| 中出视频在线观看| 7777女厕盗摄久久久| 一级毛片久久久|