ReactNative(未完,整理中)

了解新的事物之前帶著問題思考以下問題

1、什么是ReactNative?
2、ReactNative有什么特點?
3、運行ReactNative需要什么環(huán)境以及如何搭建?
4、ReactNative原理是什么?
5、ReactNative通信機制?
6、學(xué)習(xí)過程中遇到的問題以及踩過的坑?
7、參考鏈接

什么是ReactNative?

>+ 解決這個問題之前先了解什么是React?
React 是 Facebook 推出的一個用來構(gòu)建用戶界面的 JavaScript 庫。
ReactNative是由Facebook推出的,可以讓開發(fā)者使用 JavaScript 和 React 創(chuàng)建基于Web,iOS 和 Android 平臺原生應(yīng)用的一套框架。
React Native 的關(guān)鍵就是,以把 [React]編程模式的能力帶到移動開發(fā)來作為主要目標(biāo)。
它的目標(biāo)不是跨平臺一次編寫到處執(zhí)行,而是一次學(xué)習(xí)跨平臺開發(fā)。

ReactNative有什么特點?

1、JS VM跟iOS的渲染是處于兩個線程的,也就是說JS代碼控制邏輯和Viewer,
iOS Framework對Viewer進行渲染。

2、React Native繼承了React 在JSX(JavaScript 的擴展語法)中直接以聲明
式的方式來描述 UI 結(jié)構(gòu)的機制,并實現(xiàn)了一個 CSS 的子集,這把「DOM Representation」的概念
外擴成了「UI Representation」,由于不是操作真實 UI,就可以放到非 UI 線程來進行 
render(render 都不會直接影響 UI),React Native 就會同樣是把兩次 render 的 diff 結(jié)果
算出來,然后把 diff 結(jié)果傳遞回主線程,在最小范圍內(nèi)更新 UI。

3、盡管都用JavaScript,但用React做iOS開發(fā)與網(wǎng)頁開發(fā)是完全兩種體驗。
在React Native里你見不到<div>,但是會經(jīng)常用到<View>,也就是說我們已經(jīng)完全脫離了HTML的框框,
而是用標(biāo)記語言的格式寫類似XML風(fēng)格的JS代碼,調(diào)用的都是iOS平臺下的原生組件。

4、React Native的目的在于讓原本用WebView做的App去掉DOM渲染層,用更加原生的界面元素和渲染引擎提升性能,
致力于去掉更多的中間層,只保留一個Flux+React的中心概念,這才是一個合理的發(fā)展趨勢。

5、React Native將Flexbox排版移植到了iOS上,也就是說開發(fā)者可以不再忍受Constraint-based的
Layout Engine,而轉(zhuǎn)而使用更直觀、更像CSS的Boxed Layout。

6、可以直接使用Native原生的「牛逼」動畫。

7、在React Native中,寫JS的工程師解決的是「將基本組件拼裝成可用的React組件」的問題,
   寫Native Code的工程師解決的是「提供核心組件,提供足夠的擴展性、靈活性和性能」的問題。

運行ReactNative需要什么環(huán)境以及如何搭建

名詞解釋:
1、Homebrew:Mac系統(tǒng)的包管理器,用于安裝NodeJS和一些其他必需的工具軟件。
2、Node.js:一個Javascript運行環(huán)境(runtime),實際上它是對Google V8引擎進行了封裝。V8引 擎執(zhí)行Javascript的速度非常快,性能非常好。
3、React-native-cli:React Native的命令行工具。用于執(zhí)行創(chuàng)建、初始化、更新項目、運行打包服務(wù)(packager)等任務(wù)
3、NVM:node版本管理器。

環(huán)境搭建參考鏈接

ReactNative的原理是什么?

React Native用iOS自帶的JavaScriptCore作為JS的解析引擎,但并沒有用到JavaScriptCore
提供的一些可以讓JS與OC互調(diào)的特性,而是自己實現(xiàn)了一套機制,這套機制可以通用于所有JS引擎上。
App在運行時只運行一個JavaScript Core VM,然后用Objective-C搭建一個Bridge把iOS的各種
組件Expose給JS代碼。React Native實現(xiàn)了一些常用的組件的Bridge可以直接在JS中使用,
如果開發(fā)者需要使用其他的組件可以自己寫一個Bridge將API Expose給JS VM,所以理論上Native App
能做的事情React Native都能做到。

ReactNative通信機制?

ReactNative通信機制鏈接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容