React淺析(一):前言

A Javascript library for building user interfaces
用于構(gòu)建用戶界面的JavaScript庫

React是Facebook在2011年開發(fā)的前端js庫,當(dāng)時FB對市場上的mvc框架都不滿意,于是乎自己寫了一套,用來架構(gòu)Instagram,直到2013年開源。React是基于組件,構(gòu)建可復(fù)用的UI組件。

ReactJS官網(wǎng)地址:http://facebook.github.io/react/

本小節(jié)主要從React的幾個特點(diǎn)來進(jìn)行介紹。

一、用戶界面

首先先明確React不是完整的mvc框架,它更多的是關(guān)注在V(view)這一層,負(fù)責(zé)視圖層。React幫助我們把界面分成各個獨(dú)立的組件,每個組件都可以互相組合、嵌套成界面。

小知識點(diǎn)補(bǔ)充:

MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個部件里面,在改進(jìn)和個性化定制界面及用戶交互的同時,不需要重新編寫業(yè)務(wù)邏輯。

MVVM 就是將其中的View 的狀態(tài)和行為抽象化,讓我們將視圖 UI 和業(yè)務(wù)邏輯分開。當(dāng)然這些事 ViewModel 已經(jīng)幫我們做了,它可以取出 Model 的數(shù)據(jù)同時幫忙處理 View 中由于需要展示內(nèi)容而涉及的業(yè)務(wù)邏輯。

二、組件化

React的本質(zhì)是前端組件化框架。你可以在項(xiàng)目中定義小組件,并將它們組合起來行程更大的組件,無論是大小的組件,都可以實(shí)現(xiàn)復(fù)用。

組件化的兩個特點(diǎn):封裝、復(fù)用。

class MyTasks extends Componet{
    constructor(props){
        super(props)
        this.state = {
            list:[]
        }
    }
   add(something){
        const cur = this.state.list
        this.setState({
            list:cur.push(something)
        })
    }
    render(){
        return (
            <div>
                <Tasks lists = {this.state.list}/>
            <div/>
        )
    }
}
//以上MyTasks的寫法就是一個組件的封裝過程(視圖、數(shù)據(jù)、邏輯)
//組件的引用的主要核心是props的傳遞和組件的復(fù)用

寫react組件的注意事項(xiàng):
1、組件的名稱首字母必須大寫。用大小寫是為了區(qū)別通過HTML標(biāo)簽定義的JSX,大寫的組件定義時,是為了讓React.Component識別進(jìn)行定義,否則會被當(dāng)做普通的element去渲染。

三、虛擬DOM

在web開發(fā)中,用戶的操作總是需要將實(shí)時變化反應(yīng)到UI上,傳統(tǒng)的Jquery是通過頻繁的操作DOM,對頁面進(jìn)行新增、刪除、替換節(jié)點(diǎn)等多個操作。復(fù)雜和頻繁的DOM操作是性能瓶頸產(chǎn)生的重要原因。

React引入了虛擬DOM的機(jī)制,React的虛擬DOM將頁面中的UI轉(zhuǎn)換為js對象的形式來表示,當(dāng)有數(shù)據(jù)變化,會重新構(gòu)建一個新的描繪DOM的js對象,將前后DOM的js對象進(jìn)行Diff算法比較,只有不同的地方才進(jìn)行重新計算,等所有的變化都批量處理后,才會進(jìn)行DOM更新。

因?yàn)樘摂MDOM是內(nèi)存數(shù)據(jù),性能極高,而對實(shí)際的DOM操作也只是diff算法中算出來不同的部分,從而提高了性能。開發(fā)者不需要過多的關(guān)注如何改變DOM元素,只需要關(guān)注數(shù)據(jù)的變動即可。

四、JSX

JSX是JavaScript和XML結(jié)合的一種格式。
不是React獨(dú)有的,JSX是一個標(biāo)準(zhǔn),其他項(xiàng)目也可以使用。
JSX語法是無法被瀏覽器所解析,通過babel編譯,轉(zhuǎn)換成js運(yùn)行。

jsx語法.png

寫在最后

1、ReactJs是基于組件化開發(fā)的,一個頁面可以通過多個小組件組合而成,復(fù)用性高。
2、運(yùn)用了jsx語法,提高了可讀性。
3、引入了Vdom機(jī)制,不再頻繁操作DOM節(jié)點(diǎn),提高了頁面的性能。

以上的幾個React小特點(diǎn),會在后面的幾個小篇章中繼續(xù)深入研究,歡迎關(guān)注我以及各種技術(shù)交流哈!


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

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

  • 1、什么是react React.js 是一個幫助你構(gòu)建頁面 UI 的庫。React.js 將幫助我們將界面分成了...
    谷子多閱讀 2,638評論 1 13
  • 原教程內(nèi)容詳見精益 React 學(xué)習(xí)指南,這只是我在學(xué)習(xí)過程中的一些閱讀筆記,個人覺得該教程講解深入淺出,比目前大...
    leonaxiong閱讀 2,931評論 1 18
  • 朋友告我說了解一下杜子建,她說會給我啟發(fā)。 2018年5月29日,我早上了解了,他是50多歲的人,一個老頭,他在很...
    我心我愿秀閱讀 349評論 0 2
  • 最近這些日子,都不想和寢室的同學(xué)多說話,自從那天晚上以后,我開始有點(diǎn)厭惡他們了,玩起來就控制不住自己,根本不管別人...
    人生因你完整閱讀 322評論 0 1

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