為什么我們要造React?

目前JavaScript MVC框架已經(jīng)有很多了,為什么還要構(gòu)造React呢,為什么我們要使用它?

React 不是一個(gè)MVC框架

React是一個(gè)構(gòu)造可組合式用戶界面的庫。它鼓勵創(chuàng)建可重用的UI組件顯示會隨著時(shí)間而改變的數(shù)據(jù)。

React 不使用模板

傳統(tǒng)上,web應(yīng)用UIs使用模板或者h(yuǎn)tml指令構(gòu)造。這些模板規(guī)定一套完整的抽象使你可以去構(gòu)建你的UI。

不同的,React處理構(gòu)建用戶界面通過將他們分解成組件。這意味著,React使用一個(gè)真正的、全功能的編程語言去渲染視圖,我們可以看到作為一個(gè)優(yōu)勢模板的一些原因:

  • JavaScript是一個(gè)靈活的強(qiáng)大的編程語言,具有構(gòu)建抽象的能力。這是非常重要的在一個(gè)大型應(yīng)用中。
  • 通過統(tǒng)一相應(yīng)的視圖邏輯標(biāo)簽,React可以使構(gòu)建的視圖更容易擴(kuò)展和維護(hù)。
  • 通過整合標(biāo)簽和內(nèi)容到j(luò)avascript,不需要手動連接字符串因此可以減少XSS漏洞面積。

假如你更喜歡原始的HTML去編寫javascript,我們還創(chuàng)建了JSX,一個(gè)可選的語法擴(kuò)展。

被動更新非常簡單

React真正亮點(diǎn)是當(dāng)你的數(shù)據(jù)隨時(shí)間改變時(shí)。

在一個(gè)傳統(tǒng)的javascript應(yīng)用中,你需要考慮數(shù)據(jù)的變化然后指示DOM做出變化使其保持最新的。甚至AngularJS,提供一個(gè)聲明式接口經(jīng)由指令和數(shù)據(jù)綁定請求一個(gè)關(guān)聯(lián)的函數(shù)去手動的更新DOM結(jié)點(diǎn)。

React采用不同的方法。
當(dāng)組件第一次初始化時(shí),render方法被調(diào)用,為視圖生成一個(gè)輕量級的表現(xiàn)。通過這個(gè)表現(xiàn),產(chǎn)生一個(gè)標(biāo)簽字符串,然后插入到文檔中。當(dāng)數(shù)據(jù)變化時(shí),render方法再次被調(diào)用。為了盡可能有效的完成更新,我們比較之前調(diào)用render返回的值與新的值,然后產(chǎn)生一個(gè)最小限度的變更去應(yīng)用到DOM中。

render返回的數(shù)據(jù)既不是一個(gè)字符串也不是一個(gè)DOM結(jié)點(diǎn)。它是一個(gè)輕量級的類型,描述DOM應(yīng)該是什么樣的。

因?yàn)檫@個(gè)重新渲染是非常快的(TodoMVC 1毫秒左右),開發(fā)者不需要明確的指定數(shù)據(jù)綁定。我們發(fā)現(xiàn)這個(gè)方法更容易去構(gòu)建應(yīng)用程序。

HTML 僅僅是個(gè)開始

因?yàn)镽eact有自己的輕量級的文檔表現(xiàn),我們可以用它做一些很酷的事情:

  • Facebook動態(tài)表格可以通過<canvas>渲染取代HTML.
  • Instagram是一個(gè)'single page'網(wǎng)頁應(yīng)用完全由React和Backbone.Router構(gòu)建的。設(shè)計(jì)者可以像通常一樣使用JSX編寫React代碼。
  • 我構(gòu)建內(nèi)部的應(yīng)用雛形運(yùn)行React在一個(gè)web工作站上,使用React去驅(qū)動本地ios視圖通過一個(gè)Objective-C橋。
  • 你可以運(yùn)行React在服務(wù)器上,便于SEO、性能、代碼分享和項(xiàng)目靈活性。
  • 事件在全部現(xiàn)代瀏覽器(包括IE8)下表現(xiàn)一致性還有符合標(biāo)準(zhǔn)化,并且自動使用事件委派。

原文地址:http://facebook.github.io/react/blog/2013/06/05/why-react.html

英文很爛,通過字典翻譯軟件和自己的理解整理出來,如有問題或不恰當(dāng)之處,非常歡迎指出。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • 原教程內(nèi)容詳見精益 React 學(xué)習(xí)指南,這只是我在學(xué)習(xí)過程中的一些閱讀筆記,個(gè)人覺得該教程講解深入淺出,比目前大...
    leonaxiong閱讀 2,854評論 1 18
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,833評論 25 708
  • 參考文章:深度剖析:如何實(shí)現(xiàn)一個(gè)Virtual DOM 算法 作者:戴嘉華React中一個(gè)沒人能解釋清楚的問題——...
    waka閱讀 5,983評論 0 21
  • 以下內(nèi)容是我在學(xué)習(xí)和研究React時(shí),對React的特性、重點(diǎn)和注意事項(xiàng)的提取、精練和總結(jié),可以做為React特性...
    科研者閱讀 8,282評論 2 21
  • 二十、老鷹和燕雀 不要跟一只燕雀講老鷹的語言,也不要跟老鷹講燕雀的語言。 它們雖然都是鳥,但是畢竟不是同一個(gè)物種,...
    默夜清輝閱讀 845評論 2 4