React是Facebook内部的一個JavaScript類庫,已于1年開源,可用于建立Web使用者互動界面。它引入了一種新的方式來處理浏覽器DOM。那些需要手動更新DOM、費力地記錄每一個狀态的日子一去不複返了——這種老舅的方式既不具備擴充性,又很難加入新的功能,就算可以,也是有着冒着很大的風險。React使用很新穎的方式解決了這些問題。你隻需要聲明地定義各個時間點的使用者界面,而無序關系在資料變化時,需要更新哪一部分DOM。在任何時間點,React都能以最小的DOM修改來更新整個應用程式。
React引入了一些激動人心的新概念,向現有的一些最佳實踐發起了挑戰。學習這些概念,将幫助你了解它們的優勢,建立具備高擴充性的單頁面應用(SPA)。React把主要的注意力放在了應用的“視圖”部分,沒有限定與服務端互動和代碼組織的方式。
背景介紹:在web應用開發的早期,建構Web應用的唯一方案就是向伺服器發送請求,然後服務端響應請求并且傳回一個完整的頁面。從開發的角度上講這種方法非常簡單,因為開發者無須關心在浏覽器端發生了什麼。
像PHP這種語言,更加簡化了這種開發方式。使用PHP開發功能元件也很容易,這有助于開發者重用代碼,掌握應用程式的行為。開發的簡單性使得PHP成為了一門非常流行的Web應用開發語言。
不過,使用這種開發方式很難打造出極佳的使用者體驗。因為無論每次使用者想要做點什麼,都需要向服務端發送請求并等待服務端的響應,這會導緻使用者失去在頁面上所積累的狀态。
為了實作更好的使用者體驗,人們開始開發類庫,使用JavaScript在浏覽器端渲染應用。這些類庫使用的方法也不盡相同簡單的會使用帶參數的模闆,複雜的就完全掌握整個應用。随着開發者在越來越大的應用中使用這些類庫,應用也變得越來越難于把握,因為這些應用是一系列互相作用的事件的結果。與PHP那樣傳統的應用開發方式比起來,這種用戶端應用很難做好。
React發源自Facebook的PHP架構XHP的一個分支。XHP作為一個PHP架構,旨在每次有請求進來時渲染整個頁面。react的産生就是為了把這種重新渲染整個頁面的PHP式工作流帶到用戶端應用中來。
React本質上隻關心兩件事:
1.更新DOM;
2.響應事件。
React不處理Ajax、路由和資料存儲,也不規定資料組織的方式。它不是一個Model-View-Controller架構。如果非要問它是什麼,他就是MVC裡的“V”。React的精簡允許你将它內建到各種各樣的系統中 。
每次狀态改變時,使用JavaScript重新渲染整個頁面會非常慢,這應該歸咎于讀取和更新DOM的性能問題。React運用一個虛拟的DOM實作了一個非常強大的渲染系統,在React中對DOM隻更新不讀取。
工作狀态:React以渲染函數為基礎。這些函數讀入目前的狀态,将其轉換為目标頁面上的一個虛拟表現。隻要React被告知狀态有變化,他就會重新運作這些函數,計算出頁面的一個新的虛拟表現,接着自動把結果轉換成必要的DOM更新來反映新的表現。
這種方式看上去應該比通常的JavaScript方案——按需要更新每一個元素——要慢,但是React确實是這麼做的:它使用了非常高效的算法,計算出虛拟頁面目前版本和新版間的差異,基于這些差異對DOM進行必要的最少更新。React赢就赢在了最小化了重繪,并且避免了不必要的DOM操作,這兩點都是公認的性能瓶頸。
感謝閱讀 喜歡看小編文章的點個訂閱或者喜歡!小編每天都會跟大家分享文章,也會給大家提供web前端學習資料。