您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)react可以用來做什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
react是一個用于構(gòu)建用戶界面的JAVASCRIPT庫;React負(fù)責(zé)UI層面的展現(xiàn);React中的數(shù)據(jù)流是沿著組件樹從上到下單向流動的;React擁有較高的性能,代碼邏輯非常簡單。
怎么理解react?
隨著Facebook開源了React Native for Android,React的前景似乎更加光明。它從最早的UI框架慢慢演變成了一套web應(yīng)用的解決方案,并且它衍生出來的React Native更是承載著宏偉的目標(biāo):learn once, write anywhere。這對前端來說似乎是種不可抗拒的吸引力。
React有三個關(guān)鍵詞:
- Just the ui
- virtual dom
- data flow
要理解React,我從它的這三個關(guān)鍵詞入手。
2.1 Just the ui
React 負(fù)責(zé)UI層面的展現(xiàn),盡管很多人用React作[MVC]架構(gòu)中的View層,但這并不是React的本意。
一般的情況下,我們在開發(fā)過程中,通常會使用模板或者直接使用HTML來構(gòu)建UI,而HTML是靜態(tài)的,使用模板在大多數(shù)情況下是可以滿足需求的,但是在復(fù)雜的邏輯情境中就顯得有些吃力了,過多的if else或者邏輯控制在模板里,都會讓代碼變得難以維護(hù),當(dāng)然這還是說整個項目中使用統(tǒng)一的模板的情況下。
React換了一種思路解決問題,它把UI拆分成組件,而不是通過模板引擎和展示邏輯,使得它可以易于拓展和維護(hù)。因此它引入了JSX這種語法規(guī)則,可以讓我們使用類似HTML的語法去寫js的函數(shù)調(diào)用。
2.2 virtual dom
瀏覽器渲染頁面的一般過程通常是這樣的:
加載html->生成DOM樹->解析css生成Render樹->生成頁面
那么React的virtual dom是怎么做的呢?
生成virtual dom->diff->必要的DOM更新
在這里面大部分的操作放在js中去完成,因為我們都知道dom操作是很昂貴的。所以在一般的情況下React的性能還是很不錯的。
2.3 data flow
React中的數(shù)據(jù)流是沿著組件樹從上到下單向流動的。
這里的data flow指的是一種應(yīng)用架構(gòu)的實現(xiàn)方式,比如說,數(shù)據(jù)存放在哪里,在哪里觸發(fā)事件,如何響應(yīng)用戶操作。它不是React提供的什么新功能,應(yīng)該是React構(gòu)建應(yīng)用的實踐。我們理解了之后的Flux或許就更加容易理解data flow這個概念了。
2.4 Flux overview
Flux是facebook配套React強(qiáng)推的一種應(yīng)用架構(gòu)思想。它利用數(shù)據(jù)的單向流動為React的可復(fù)用的視圖組件提供了補(bǔ)充。
與React的數(shù)據(jù)流動方式相同,在Flux架構(gòu)中,數(shù)據(jù)也是單向流動的:
簡單的說,所有的數(shù)據(jù)流動都會經(jīng)過Dispatcher。Action可以通過action creator產(chǎn)生并被提供給dispatcher,但多數(shù)情況下action是通過用戶與views的交互產(chǎn)生。
在View層捕獲用戶的交互,產(chǎn)生一個Action,通過觸發(fā)注冊在Dispatcher上面的事件回調(diào),使得相關(guān)的Store響應(yīng)Action,然后會觸發(fā)到Store上面的onChange事件,進(jìn)一步的更新View。
數(shù)據(jù)流動也始終是如上圖所示的單向流動的。
關(guān)于“react可以用來做什么”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。