React 學(xué)習(xí)總結(jié)(一)-初識

引言

我們知道對于傳統(tǒng)的web開發(fā)方式是通過服務(wù)器或者用戶輸入的交互數(shù)據(jù)高效的動(dòng)態(tài)的反映到復(fù)雜的用戶界面上,但是隨著項(xiàng)目的越來越大棒动,造成難以維護(hù)或者力不從心扛邑⊥┖保基于此死宣,涌現(xiàn)出了許多優(yōu)秀的開源框架,如谷歌的Angular眶掌、Facebook的React等逸爵,本篇文章只是我對React學(xué)習(xí)過程的一個(gè)記錄师倔,現(xiàn)在想想自己當(dāng)初選擇學(xué)習(xí)react原因可能......

React介紹

  • React 是一個(gè)用于構(gòu)建用戶界面的 JAVASCRIPT 庫。
  • React主要用于構(gòu)建UI萎攒,很多人認(rèn)為 React 是 MVC 中的 V(視圖)货矮。
  • React 起源于 Facebook 的內(nèi)部項(xiàng)目,用來架設(shè) Instagram 的網(wǎng)站畸陡,并于 2013 年 5 月開源鹰溜。
  • React 擁有較高的性能,代碼邏輯非常簡單罩锐,越來越多的人已開始關(guān)注和使用它奉狈。

React特點(diǎn)

  1. 聲明式設(shè)計(jì):React采用聲明范式,可以輕松描述應(yīng)用涩惑。
  2. 高效 :React通過Virtual DOM仁期,最大限度地減少與DOM的交互。
  3. 靈活 :React可以與已知的庫或框架很好地配合。
  4. JSX : JSX 是 JavaScript 語法的擴(kuò)展跛蛋。React 開發(fā)不一定使用 JSX 熬的,但建議使用它。
  5. 組件 :通過 React 構(gòu)建組件赊级,使得代碼更加容易得到復(fù)用押框,能夠很好的應(yīng)用在大項(xiàng)目的開發(fā)中。
  6. 單向響應(yīng)的數(shù)據(jù)流:React 實(shí)現(xiàn)了單向響應(yīng)的數(shù)據(jù)流理逊,從而減少了重復(fù)代碼橡伞,這也是它為什么比傳統(tǒng)數(shù)據(jù)綁定更簡單。

上面的話可能有點(diǎn)多余晋被,下面就正式開始介紹React基礎(chǔ)知識及使用兑徘。


Virtual DOM(虛擬DOM)

為什么引入Virtual DOM?

在介紹Virtual DOM之前不得不說一下什么是DOM羡洛,DOM挂脑,Document Object Model,即文檔數(shù)據(jù)模型欲侮,它是針對XML但經(jīng)過擴(kuò)展用于HTML的應(yīng)用程序編程接口(API)崭闲。真實(shí)頁面對應(yīng)一個(gè)DOM樹,當(dāng)頁面需要更新時(shí)威蕉,借助DOM提供的API刁俭,可以對其進(jìn)行更新,但是這樣做很消耗性能忘伞,會(huì)使項(xiàng)目變得難以維護(hù)薄翅,而React把真實(shí)的DOM樹轉(zhuǎn)換成Javascript對象樹,即在瀏覽器端用Javascript實(shí)現(xiàn)了一套DOM API氓奈,這就是Virtual DOM翘魄。在使用React開發(fā)時(shí),當(dāng)需要對真實(shí)DOM進(jìn)行修改時(shí)舀奶,先對Virtual DOM進(jìn)行修改暑竟,再和真實(shí)的DOM進(jìn)行比較,在真實(shí)DOM中只改變需要改變的地方育勺,即只改變局部但荤,不改變整體,因此對系統(tǒng)性能的消耗較小涧至,對Virtual DOM的修改會(huì)在狀態(tài)改變時(shí)觸發(fā)腹躁。二者之間的比較是基于diff算法,若想詳細(xì)了解React算法的南蓬,請查看知乎上的這篇文章纺非。


JSX

什么是JSX哑了?

JSX,全稱Javascript XML烧颖, 是一個(gè)類 XML 的 JavaScript 語法擴(kuò)展弱左,提供了一種在JavaScript中編寫聲明式的XML的方法。JSX是React的核心組成部分,官方推薦使用它炕淮, 當(dāng)然如果你想直接使用純Javascript代碼寫也是可以的拆火,只是使用JSX,組件的結(jié)構(gòu)和組件之間的關(guān)系看上去更加清晰涂圆∶蔷担可以使用babel在線編譯工具將JSX轉(zhuǎn)化成原生Javascript語言。
下面是一個(gè)簡單的例子:
JSX代碼:

<Hello color="blue">
  Hello world
</Hello>

使用babel工具編譯后代碼:

React.createElement(
  Hello,
  { 
    color: "blue"
 },
  "Hello world"
);

組件

組件乘综,即封裝起來的具有獨(dú)立功能的UI部件憎账。React推薦以組件的方式去重新思考UI構(gòu)成,將UI上每一個(gè)功能相對獨(dú)立的模塊定義成組件卡辰,然后將小的組件通過組合或者嵌套的方式構(gòu)成大的組件,最終完成整體UI的構(gòu)建邪意。

例九妈,通過以下代碼創(chuàng)建一個(gè)簡單的<Hello/>組件:

var Hello = React.createClass({
  render: function() {
    return <h1>Hello World</h1>;
  }
});
 
ReactDOM.render(
  <Hello />,
  document.getElementById('example')
);

這里用到了React.createClass方法構(gòu)建了一個(gè)組件對象,用ReactDOM.render方法將創(chuàng)建的組件插入到頁面中雾鬼,有關(guān)這些介紹會(huì)在以后的文章中介紹萌朱。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市策菜,隨后出現(xiàn)的幾起案子晶疼,更是在濱河造成了極大的恐慌,老刑警劉巖又憨,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件翠霍,死亡現(xiàn)場離奇詭異,居然都是意外死亡蠢莺,警方通過查閱死者的電腦和手機(jī)寒匙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來躏将,“玉大人锄弱,你說我怎么就攤上這事』霰铮” “怎么了会宪?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蚯窥。 經(jīng)常有香客問我掸鹅,道長喜命,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任河劝,我火速辦了婚禮壁榕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赎瞎。我一直安慰自己牌里,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布务甥。 她就那樣靜靜地躺著牡辽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪敞临。 梳的紋絲不亂的頭發(fā)上态辛,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機(jī)與錄音挺尿,去河邊找鬼奏黑。 笑死,一個(gè)胖子當(dāng)著我的面吹牛编矾,可吹牛的內(nèi)容都是我干的熟史。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼窄俏,長吁一口氣:“原來是場噩夢啊……” “哼蹂匹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凹蜈,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤限寞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后仰坦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體履植,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年缎岗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了静尼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,102評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡传泊,死狀恐怖鼠渺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情眷细,我是刑警寧澤拦盹,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站溪椎,受9級特大地震影響普舆,放射性物質(zhì)發(fā)生泄漏恬口。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一沼侣、第九天 我趴在偏房一處隱蔽的房頂上張望祖能。 院中可真熱鬧,春花似錦蛾洛、人聲如沸养铸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钞螟。三九已至,卻和暖如春谎碍,著一層夾襖步出監(jiān)牢的瞬間鳞滨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工蟆淀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拯啦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓扳碍,卻偏偏與公主長得像提岔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子笋敞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,167評論 25 707
  • 原教程內(nèi)容詳見精益 React 學(xué)習(xí)指南,這只是我在學(xué)習(xí)過程中的一些閱讀筆記荠瘪,個(gè)人覺得該教程講解深入淺出夯巷,比目前大...
    leonaxiong閱讀 2,839評論 1 18
  • 3. JSX JSX是對JavaScript語言的一個(gè)擴(kuò)展語法, 用于生產(chǎn)React“元素”哀墓,建議在描述UI的時(shí)候...
    pixels閱讀 2,828評論 0 24
  • 1.經(jīng)典的木桶定律是講一只水桶能裝多少水取決于它最短的那塊木板. 2.一只木桶能夠裝多少水正常情況下(指木桶的大小...
    德川亮閱讀 405評論 0 1
  • 最近處在空檔期趁餐,無論是工作還是家庭生活。 工作上篮绰,之前一直在弄基本功考試后雷,盡管準(zhǔn)備得很不充分,仍然做垂死掙扎狀吠各,想...
    mylkevin閱讀 340評論 0 0