1. 程式人生 > >react和react native簡單概念

react和react native簡單概念

react
react的本質是一個工具,用來幫助開發者操作DOM,從而構建出頁面。
一個用於建立可複用,可聚合web元件的js庫。
只提供前端MVC框架中的“V”,並不是完整的前端MVC框架。
DOM的全稱是文件物件模型。
jqury是一個javascript庫,也是幫助開發者操作DOM。

react的核心概念

響應式UI
虛擬DOM樹(javascript雖快,但是更新dom很慢,每次更新時,react重建dom樹,
	找到與上個版本的dom的差異,計算出最新的dom更新操作,從操作佇列中批量執行dom更新操作)
	虛擬DOM的核心思想是:對複雜的文件DOM結構,提供一種方便的工具,進行最小化的DOM操作。
元件,減少程式碼,增強複用性(一個獨立的函式)
	自定義的元件都必須要用大些字母開頭,普通的html標籤都用小寫字母開頭。
	為事件繫結this,bind(this)
jsx(與angularjs的區別,javascript的xml的語法擴充套件)
	jsx:在js裡面寫標籤。
	所謂的JSX其實就是javascript物件。

單向資料流(資料一旦更新,渲染整個app)
渲染方式:使用者輸入(從API獲取資料)--將資料傳給頂層元件--react將每個元件渲染出來。

react
react概念
建立元件
元件的巢狀
元件的狀態(state)
元件的引數(props)(預設引數static defaultProps,設定引數型別propTypes: {XXX:React.PropTypes.array.isRequired})
props一旦傳入,不可以在元件內部對它進行修改,可以通過父元件主動重新渲染的方式來傳入新的props,從而達到更新的效果。
state的主要作用是用於元件儲存,控制,修改自己的可變狀態,
state在元件內部初始化,可以被元件自身修改,而外部不能訪問也不能修改。
state是一個區域性的,只能被元件自身控制的資料來源
state中狀態可以通過this.setstate方法進行更新,setstate會導致元件的重新渲染。

props的主要作用是讓使用該元件的父元件可以傳入引數來配置元件,它是外部傳進來的配置引數,元件內部無法控制也無法修改。

react將元件渲染,並且構造DOM元素然後塞入頁面的過程稱之為元件的掛載。

react是在web上開發使用者介面的利器。
使用react來開發UI的話,就能夠描述你想要的,而不是告訴UI如何更新(響應式UI)
還可以在可重用元件中組織程式碼,並建立高效能使用者介面而無需擔心速度超慢的DOM(虛擬DOM)
react使得開發者更專注於上層業務,而不是底層DOM更新的細節。
這種開發UI的方式稱之為react正規化。

移動端和web端不同的地方,不同系統之間時完全不同的。
在過去,要開發原生應用的話,開發者需要學習特定的語言和平臺工具鏈。
如果想要開發出的原生應用執行在ios和安卓兩個平臺的話,
需要建立兩套完全分離的程式碼庫。同樣的業務邏輯需要寫兩遍,開發應用既困難,成本又高,
從長遠來看的話維護更是如此。

react native
渲染器(render)和全新的react

對於web應用來說,react負責啟用react正規化(管理響應式UI、元件和虛擬DOM),以及實際更新瀏覽器中的DOM,當DOM是唯一需要互動的物件時,react可以輕鬆處理好兩項任務。

對於原生應用的話,當需要管理不同平臺的各種顯示規則時,react建立者們將原來的react拆分成兩部分,第一部分是全新的react,它負責啟用react正規化,第二部分叫做reactDom,它唯一的任務就是與瀏覽器中的dom進行互動。因為reactDom負責更新dom,而dom又決定了瀏覽器渲染的內容,所以將reactDom稱之為渲染器。

react的官網定義是:用來開發使用者介面的javascript庫,它的含義有兩層:首先它是UI開發的利器,其次它不涉及任何其他領域。相比於react,
react native包含更多東西:

全新的react作為核心庫
ios和安卓的渲染器
將程式碼轉換成可安裝應用的工具
原生UI元件(狀態列、列表等)和動畫
UI的樣式和佈局工具箱(flexbox)
構建大多數應用的基礎部分(比如網路)
提供原生功能的部分(比如貼上板、加速計和儲存)

react native本身是一個完整的平臺,它包含開發完整應用所需的一切,相比之下,原本的react只負責web UI,需要引用其他部分才能創建出一個web應用。它可以使用javascript來開發真正的原生應用,並且是用react正規化。體現:學習一次,隨處編寫。