ReactNative簡介
ReactNative是Facebook于2015年4月開源的跨平臺移動應(yīng)用開發(fā)框架,是Facebook早先開源的UI框架React在原生移動應(yīng)用平臺的衍生產(chǎn)物,目前支持iOS和Android 倆大平臺。
ReactNative可以基于目前大熱的開源JavaScript庫ReactJS來開發(fā)iOS和Android移動應(yīng)用。
優(yōu)點:
一套代碼可以滿足iOS和Android
由于基于Web技術(shù),ReactNative開發(fā)起來可以像瀏覽器那樣隨改即所見。
原理:
ReactNative的原理是在JavaScript中使用React抽象操作系統(tǒng)的原生UI組件。
比如:代替DOM元素來渲染潔面,比如用View組件取代div,用Image組件取代img等。
線程:
ReactNative主要有2個線程:
主線程和JavaScript引擎線程,倆個線程之間通過批量化的async消息協(xié)議來通信。
布局:
在UI方面,ReactNatice提供跨平臺的蕾絲Flexbox的布局系統(tǒng),還支持CSS子集??梢杂肑SX或者普通JavaScript語言。
Flexbox是什么?
根據(jù)規(guī)范中的描述可知道,F(xiàn)lexbox模塊提供了一個有效的布局方式,即使不知道視窗大小或者未知元素情況之下都可以智能的,靈活的調(diào)整和分配元素和空間兩者之關(guān)的關(guān)系。簡單的理解,就是可以自動調(diào)整,計算元素在容器空間中的大小。
可以理解成一個布局模塊
特點:
ReactNatice相比原聲開發(fā)主要有以下特點:
1.App占用體積小
2.跨平臺
3.相對成熟的技術(shù)
隨著安卓/iOS的ReactNative陸續(xù)開源,原聲提供的組件和API相對豐富,且實現(xiàn)技術(shù)基本一致,對于熟悉前端和原聲APP開發(fā)的人員來說比較容易上手,而ReactNative 通過 JavaScriptCore將JS轉(zhuǎn)換為原生APP組件進(jìn)行渲染,體驗可媲美原生APP。
什么事JavaScriptCore?
首先要區(qū)分JavaScriptCore 和 JavaScriptCore 框架
JavaScriptCore框架 是一個蘋果在iOS7引入的框架,該框架讓 Objective-C 和 JavaScript 代碼直接的交互變得更加的簡單方便。
而JavaScriptCore是蘋果Safari瀏覽器的JavaScript引擎,或許你聽過Google的V8引擎,在WWDC上蘋果演示了最新的Safari,據(jù)說JavaScript處理速度已經(jīng)大大超越了Google的Chrome,這就意味著JavaScriptCore在性能上也不輸V8了。
JavaScriptCore框架其實就是基于webkit中以C/C++實現(xiàn)的JavaScriptCore的一個包裝,在舊版本iOS開發(fā)中,很多開發(fā)者也會自行將webkit的庫引入項目編譯使用?,F(xiàn)在iOS7把它當(dāng)成了標(biāo)準(zhǔn)庫。
JavaScriptCore框架在OS X平臺上很早就存在的,不過接口都是純C語言的,而在之前的iOS平臺(iOS7之前),蘋果沒有開放該框架,所以不少需要在iOS app中處理JavaScript的都得自己從開源的WebKit中編譯出JavaScriptCore.a,接口也是純C語言的??赡苁翘O果發(fā)現(xiàn)越來越多的程序使用了自編譯的JavaScriptCore,干脆做個順?biāo)饲閷avaScriptCore框架開放了,同時還提供了Objective-C的封裝接口。
4.支持動態(tài)更新
在原生APP開發(fā)中,Android平臺可以通過插件化實現(xiàn)熱更新,在iOS平臺上,熱更新策略是嚴(yán)令禁止的(如JSPatch/wax/roollout等技術(shù)),而采用ReactNative技術(shù)完全可以滿足要求,而又不觸碰蘋果的底線。