react

react是什么?

react官網(wǎng)上說

React is flexible and can be used in a variety of projects. You can create new apps with it, but you can also gradually introduce it into an existing codebase without doing a rewrite.

react是靈活的贸呢,可以在各種項目中使用。您可以使用它創(chuàng)建新的應(yīng)用程序,當然您也可以在不重寫的情況下逐步將其引入到現(xiàn)有的代碼庫中。

總的來說:

  • React 是一個用于構(gòu)建用戶界面的 JAVASCRIPT 庫租冠。
  • React主要用于構(gòu)建UI掸犬,很多人認為 React 是 MVC 中的 V(視圖)。
  • React 起源于 Facebook 的內(nèi)部項目甜害,用來架設(shè) Instagram 的網(wǎng)站咱枉,并于 2013 年 5 月開源卑硫。
  • React 擁有較高的性能徒恋,代碼邏輯非常簡單,越來越多的人已開始關(guān)注和使用它拔恰。

react的特點

1.聲明式設(shè)計 ?React采用聲明范式因谎,可以輕松描述應(yīng)用基括。

2.高效?React通過對DOM的模擬颜懊,最大限度地減少與DOM的交互。

  • 虛擬DOM(virtual dom):我們知道js執(zhí)行很快风皿,耗費性能的部分是操作dom河爹, react引入virtual dom的概念,當數(shù)據(jù)變化時桐款,采用優(yōu)化diff算法咸这,對比virtual dom差異,精準更新dom魔眨。

    這樣做媳维,不但解決了頻繁操作dom的性能問題,還解放了開發(fā)人員遏暴。開發(fā)者不需要關(guān)注某個數(shù)據(jù)的變化如何更新到一個或多個具體的DOM元素侄刽,而只需要關(guān)心在任意一個數(shù)據(jù)狀態(tài)下,整個界面是如何render的朋凉,至于如何進行局部更新來保證性能州丹,則是React要完成的事情。

    除了性能的考慮杂彭,React引入虛擬DOM更重要的意義是提供了一種一致的開發(fā)方 式來開發(fā)服務(wù)端應(yīng)用墓毒、Web應(yīng)用和手機端應(yīng)用:
    image

    因為有了虛擬DOM這一層佩谣,所以通過配備不同的渲染器礼旅,就可以將虛擬DOM的內(nèi)容 渲染到不同的平臺。而應(yīng)用開發(fā)者尘颓,使用JavaScript就可以通吃各個平臺了团秽。相當棒的思路主胧!

3.靈活??React可以與已知的庫或框架很好地配合。

4.JSX?JSX 是 JavaScript 語法的擴展徙垫。React 開發(fā)不一定使用 JSX 讥裤,但我們建議使用它。

5.組件?通過 React 構(gòu)建組件姻报,使得代碼更加容易得到復(fù)用己英,能夠很好的應(yīng)用在大項目的開發(fā)中。

1.虛擬DOM(virtual-dom)不僅帶來了簡單的UI開發(fā)邏輯吴旋,同時也帶來了組件化開發(fā)的思想损肛,所謂組件厢破,即封裝起來的具有獨立功能的UI部件。React推薦以組件的方式去重新思考UI構(gòu)成治拿,將UI上每一個功能相對獨立的模塊定義成組件摩泪,然后將小的組件通過組合或者嵌套的方式構(gòu)成大的組件,最終完成整體UI的構(gòu)建劫谅。例如见坑,F(xiàn)acebook的instagram.com整站都采用了React來開發(fā),整個頁面就是一個大的組件捏检,其中包含了嵌套的大量其它組件荞驴,大家有興趣可以看下它背后的代碼。

2.如果說MVC的思想讓你做到視圖-數(shù)據(jù)-控制器的分離贯城,那么組件化的思考方式則是帶來了UI功能模塊之間的分離熊楼。我們通過一個典型的Blog評論界面來看MVC和組件化開發(fā)思路的區(qū)別

3.對于MVC開發(fā)模式來說,開發(fā)者將三者定義成不同的類能犯,實現(xiàn)了表現(xiàn)鲫骗,數(shù)據(jù),控制的分離踩晶。開發(fā)者更多的是從技術(shù)的角度來對UI進行拆分执泰,實現(xiàn)松耦合。

  • 組件化開發(fā)特性:React認為一個組件應(yīng)該具有如下特征:
    • 可組合(Composeable):一個組件易于和其它組件一起使用合瓢,或者嵌套在另一個組件內(nèi)部坦胶。如果一個組件內(nèi)部創(chuàng)建了另一個組件,那么說父組件擁有(own)它創(chuàng)建的子組件晴楔,通過這個特性顿苇,一個復(fù)雜的UI可以拆分成多個簡單的UI組件;
    • 可重用(Reusable):每個組件都是具有獨立功能的税弃,它可以被使用在多個UI場景纪岁;
    • 可維護(Maintainable):每個小的組件僅僅包含自身的邏輯,更容易被理解和維護则果;
    • 可測試(Testable):因為每個組件都是獨立的幔翰,那么對于各個組件分別測試顯然要比對于整個UI進行測試容易的多。

6.單向響應(yīng)的數(shù)據(jù)流?React 實現(xiàn)了單向響應(yīng)的數(shù)據(jù)流西壮,從而減少了重復(fù)代碼遗增,這也是它為什么比傳統(tǒng)數(shù)據(jù)綁定更簡單

react怎么用?

  • 首先需要引入三個最基本的js庫:

react.js -React的核心庫

react-dom.js -提供雨dom相關(guān)的功能

browser.js -作用是將 JSX 語法轉(zhuǎn)為 JavaScript語法款青,這一步很消耗時間做修,實際上線的時候,應(yīng)該將它放到服務(wù)器完成。

  • 提供接口的dom節(jié)點
  • 倆個重要的倆個對象ReactDOM.render()饰及,React.createClass()

接下來先看一個最基本的案例:

  • es5書寫形式:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script src="build/react.js"></script>
<script src="build/react-dom.js"></script>
<script src="build/browser.min.js"></script>
<div id="example"></div>
<script type="text/babel">
    ReactDOM.render(
            <h1>Hello World</h1>,
        document.getElementById('example')
    )
</script>
</body>
</html>
  • es6書寫形式:
import React, { Component } from 'react';
import ReactDOM, { render } from 'react-dom';

class App extends Component {
    constructor(props) {
        super(props);
    }
    render() {
        return (
            <div>Hello world</div>
        )
}
}
render(<App />, document.getElementById('app'));

參考文章可以見阮一峰老師的React入門實例教程

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蔗坯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子燎含,更是在濱河造成了極大的恐慌宾濒,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件屏箍,死亡現(xiàn)場離奇詭異绘梦,居然都是意外死亡,警方通過查閱死者的電腦和手機铣除,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門谚咬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鹦付,“玉大人尚粘,你說我怎么就攤上這事∏贸ぃ” “怎么了郎嫁?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長祈噪。 經(jīng)常有香客問我泽铛,道長,這世上最難降的妖魔是什么辑鲤? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任盔腔,我火速辦了婚禮,結(jié)果婚禮上月褥,老公的妹妹穿的比我還像新娘弛随。我一直安慰自己,他們只是感情好宁赤,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布舀透。 她就那樣靜靜地躺著,像睡著了一般决左。 火紅的嫁衣襯著肌膚如雪愕够。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天佛猛,我揣著相機與錄音惑芭,去河邊找鬼。 笑死继找,一個胖子當著我的面吹牛遂跟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼漩勤,長吁一口氣:“原來是場噩夢啊……” “哼感挥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起越败,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤触幼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后究飞,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體置谦,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年亿傅,在試婚紗的時候發(fā)現(xiàn)自己被綠了媒峡。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡葵擎,死狀恐怖谅阿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情酬滤,我是刑警寧澤签餐,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站盯串,受9級特大地震影響氯檐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜体捏,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一冠摄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧几缭,春花似錦河泳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至韵洋,卻和暖如春竿刁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背搪缨。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工食拜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人副编。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓负甸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子呻待,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

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

  • 原教程內(nèi)容詳見精益 React 學習指南打月,這只是我在學習過程中的一些閱讀筆記,個人覺得該教程講解深入淺出蚕捉,比目前大...
    leonaxiong閱讀 2,810評論 1 18
  • 一奏篙、why React? React是Facebook開發(fā)的一款JS庫迫淹。React一般被用來作為MVC中的V層秘通,它...
    amm0117閱讀 11,083評論 0 1
  • 參考文章:深度剖析:如何實現(xiàn)一個Virtual DOM 算法 作者:戴嘉華React中一個沒人能解釋清楚的問題——...
    waka閱讀 5,952評論 0 21
  • React簡介 React 起源于 Facebook 的內(nèi)部項目,因為該公司對市場上所有 JavaScript M...
    程序員點點閱讀 527評論 0 3
  • 你們又要說我秀恩愛了敛熬,話說有了寶寶之后都沒時間恩愛了~老公送我的圣誕禮物肺稀,拿到之后我可驚喜了,問他怎么知道我喜歡鵝...
    陳秋佳Ruby閱讀 281評論 0 0