ReactNative簡介

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ù)完全可以滿足要求,而又不觸碰蘋果的底線。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,373評論 25 708
  • 當(dāng)自己慢慢一個人開始自己照顧自己, 就開始自己開始煮飯,自己做菜,打掃衛(wèi)生,就開始的時候就很想找個女朋友,覺得這些...
    伊人已有佳人閱讀 226評論 0 0
  • 后院已經(jīng)完工!跟以前天壤之別。 每天走進(jìn)家園,心情隨之雀躍。有了外部環(huán)境的渲染,我們又怎能辜負(fù)這片美景。每天昕爸多...
    淡淡百合閱讀 618評論 7 2