初識React
React 來自于Facebook席楚,是的漩蟆,就是那個你們聽說過但是打不開的網(wǎng)站。React 起源于 Facebook 的內(nèi)部項目徙鱼,因為該公司對市場上所有 JavaScript MVC 框架都不滿意苍日,就決定自己寫一套惭聂,用來架設(shè) instagram的網(wǎng)站。做出來以后相恃,發(fā)現(xiàn)這套東西很好用辜纲,就在2013年5月開源了。所以說拦耐,很多東西都是有智慧的懶人創(chuàng)造的耕腾。在React的官方博客中明確闡述了React不是一個MVC框架,而是一個用于構(gòu)建組件化UI的庫杀糯,是一個前端界面開發(fā)工具扫俺。所以頂多算是MVC中的V(view)。經(jīng)過這幾年的沉淀固翰,React越來越強大狼纬,也受到了越來越多的開發(fā)者喜愛。
優(yōu)點
- 復(fù)雜場景下的高性能
- 代碼量的節(jié)省
- 非常清晰的代碼結(jié)構(gòu)
- 項目將來的可拓展性和可維護性
虛擬DOM
這可以說是一個全新的概念骂际,對于他的好壞疗琉,業(yè)界也是眾說紛紜,但是就我個人來說方援,我覺得這是一個重大的突破没炒。
所謂的虛擬DOM涛癌,就是如下的代碼:
ReactDOM.render(
<h1>Hello, world!</h1>,
document.getElementById('example')
);
ReactDOM.render 是 React 的最基本方法犯戏,用于將模板(即函數(shù)中的第一個參數(shù))轉(zhuǎn)為 HTML 語言,并插入指定的 DOM 節(jié)點拳话。而模板中的div其實和DOM中的div完全是兩碼事兒了先匪,只不過React提供了和DOM類似的Tag和API,事實上React會通過他自己的邏輯去轉(zhuǎn)化為真正的DOM弃衍。所以呀非,把這種叫做虛擬DOM。
使用虛擬DOM可以帶來的明顯好處就是,當有數(shù)據(jù)變動導(dǎo)致DOM變動時岸裙,React不是全局刷新猖败,而是通過它內(nèi)部的 dom diff算法計算出不同點,然后以最小粒度進行更新降允。這也是React號稱性能好的原因恩闻。
JSX
JSX是React的重要組成部分,他使用類似XML標記的方式來聲明界面及關(guān)系剧董。HTML 語言直接寫在 JavaScript 語言之中幢尚,不加任何引號,這就是 JSX 的語法翅楼,它允許 HTML 與 JavaScript 的混寫尉剩。
var names = ['Alice', 'Emily', 'Kate'];
ReactDOM.render(
<div>
{
names.map(function (name) {
return <div>Hello, {name}!</div>
})
}
</div>,
document.getElementById('example')
);
上面代碼體現(xiàn)了 JSX 的基本語法規(guī)則:遇到 HTML 標簽(以 < 開頭),就用 HTML 規(guī)則解析毅臊;遇到代碼塊(以 { 開頭)理茎,就用 JavaScript 規(guī)則解析。這為我們的代碼編寫提供了極大的便利管嬉,而且JSX中除了使用HTML標記之外功蜓,并沒有復(fù)雜的標記,這種自然而直觀的方式直接降低了React的學(xué)習(xí)門檻并且讓代碼更容易理解宠蚂。
簡化可復(fù)用的組件
虛擬DOM(virtual-dom)不僅帶來了簡單的UI開發(fā)邏輯式撼,同時也帶來了組件化開發(fā)的思想,所謂組件求厕,即某個獨立功能或者界面的封裝著隆,達到復(fù)用或者UI和業(yè)務(wù)松耦合的目的。React推薦以組件的方式去重新思考UI構(gòu)成呀癣,將UI上每一個功能相對獨立的模塊定義成組件美浦,然后將小的組件通過組合或者嵌套的方式構(gòu)成大的組件,最終完成整體UI的構(gòu)建项栏。
React框架里面使用了簡化的組件模型浦辨,但更徹底地使用了組件化的概念。React將整個UI上的每一個功能模塊定義成組件沼沈,然后將小的組件通過組合或者嵌套的方式構(gòu)成更大的組件流酬。這種做法已經(jīng)在instagram 網(wǎng)站上普遍實施,大家可以看看instagram的前端源代碼列另。
與傳統(tǒng)組件有什么區(qū)別:
1芽腾、React通過功能來定義最小粒度的組件。
2页衙、React組件的生命周期:Mounting摊滔、Updating阴绢、Unmounting。
組件化:組件封裝艰躺,組件復(fù)用
組件封裝:封裝視圖呻袭、數(shù)據(jù)、變化邏輯(數(shù)據(jù)驅(qū)動視圖變化)
組件復(fù)用:props傳遞腺兴,復(fù)用
React 與 Vue 的本質(zhì)區(qū)別
1棒妨、vue 本質(zhì)是MVVM框架,由MVC發(fā)展而來含长。React 本質(zhì)是前端組件化框架券腔,由后端組件化發(fā)展而來
2、vue使用模板拘泞,React使用JSX
3纷纫、React本身就是組件化,沒有組件化就不是React陪腌。vue也支持組件化辱魁,不過是在MVVM上的擴展
總結(jié)
React為前端開發(fā)帶來許多便利,降低前端代碼的復(fù)雜性诗鸭,而且能夠保證性能保證質(zhì)量染簇,所以才能這么火,并且有這么多的人來加入React開發(fā)的行列强岸。