react作為全球使用人數(shù)最多的前端框架,究竟有什么特點呢?本人總結(jié)歸納出以下6點:
- 聲明式開發(fā)
react作為新一代流行的前端框架自然與舊一代流行的框架jquery有所不同。jquery以封裝了大量的dom操作api著稱,我們寫完一個jquery構(gòu)建的項目我們會發(fā)現(xiàn)其實頁面60%都是在做dom的獲取,這就是命令式編程。react則是數(shù)據(jù)驅(qū)動,改變視圖就是聲明、操作數(shù)據(jù)即可。用jquery做頁面好比我們要建一座大樓,我們必須手把手地教工人怎么一塊一塊砌磚成墻,要關(guān)注許多細節(jié)才能把樓建成;而react則是做一張設(shè)計圖,工人就按這個設(shè)計圖按部就班地建樓。這是既簡單高效的做法(當(dāng)然也不可否認jquery的優(yōu)勢,其做復(fù)雜交互以及兼容瀏覽器方面是難以取代的) - 可以與其他框架共存
在react中,其有一個根元素,比如是id為root的div,包裹了所有的元素,react只負責(zé)這塊內(nèi)容的dom渲染,我們可以在這個根元素同級再創(chuàng)建一個div,這個div內(nèi)的內(nèi)容則可以引入jquey,兩者互不影響 - 組件化
react中推崇組件化開發(fā),把頁面拆分成許多小塊,css、js互不影響,大大提高了復(fù)用性與簡潔性 - 單向數(shù)據(jù)流
組件化就難免遇到傳值問題,單向數(shù)據(jù)流指的是只能父組件傳遞給子組件數(shù)據(jù),子組件無法更改父組件的數(shù)據(jù)。若不是單向,可以試想,當(dāng)我們一個父組件對應(yīng)5個組件時,這5個組件都改了父組件的數(shù)據(jù),我們要如何判別?react增加這一限制無疑大大提高了代碼的可維護性 -
視圖層框架
在小型項目中組件比較少,父子組件隔的層數(shù)比較少,相互傳值比較直接,但在大型項目中數(shù)據(jù)就難以維護了
組件傳值
就像上圖,一個圓圈代表一個組件,紫色組件要傳遞數(shù)據(jù)給箭頭所指的組件就要先傳遞數(shù)據(jù)給他的曾祖父組件,曾祖父在他的孫子組件,這樣傳遞數(shù)據(jù)會有很多冗余代碼也很復(fù)雜,無疑會令人很崩潰。因此就需要借助數(shù)據(jù)層組件比如redux,就像vue中的vuex一樣做全局數(shù)據(jù)狀態(tài)管理 - 函數(shù)式編程
react用了jsx語法,組件中代碼都是放在一個個函數(shù)中的,這樣即可將復(fù)雜的代碼拆分成一個個函數(shù),不會混雜到一塊,很簡潔方便維護?,F(xiàn)在也推崇測試式編程,就是引入自動化測試,函數(shù)輸入?yún)?shù)返回預(yù)期值則測試通過,函數(shù)式編程則跟這個十分吻合
存在即合理,react框架展示了許多優(yōu)秀的編程思想,值得我們細細品味。這是本人的一些關(guān)于react的理解思考,在此做筆記,剛剛過去的秋招也遇到很多面試官會問所使用的vue、react、jquery的區(qū)別,現(xiàn)在想想就是要考察我們對框架是否深入理解,只有深入理解了才知道在什么場景用更合適高效,勤做總結(jié),有利于面試更有利于理解。
