根據React官方介紹,React-A JavaScript library for building user interfaces,React 是一個爲數據提供渲染爲HTML視圖的開源JavaScript庫。從這個定義來看,能夠發現React是一個View層,它的做用是提供了一套數據機制。
React是第一個採用Virtual DOM的、流行的前端框架。傳統的DOM操做是直接在DOM上操做的,當須要修改一系列元素中的值時,就會直接對DOM進行操做。而採用Virtual DOM則會對須要修改的DOM進行比較(DIFF),從而只選擇須要修改的部分。所以,對於不須要大量修改DOM的應用來講,採用Virtual DOM並不會有優點。
除了在編寫應用時不須要對DOM進行直接操做、提升了應用的性能,React還有一個重要的思想即組件化,即UI中的每一個組件都是獨立封裝的。而且,因爲這些組件獨立於HTML,因此它們不只能夠運行在瀏覽器裏,還能做爲原生應用的組件來運行。組件之間可經過屬性和事件來進行通訊。同時,在React中還引入了JSX模板,即在JS中編寫模板,並且還須要使用ES6.
使人遺憾的是,React只是一個View層,它是爲了優化DOM的操做而誕生的。爲了完成一個完整的應用,咱們還須要路由庫、執行單向流庫、web API調用庫、測試庫、依賴管理庫等,這簡直是一場噩夢。所以爲了搭建出一個完整的React工程,咱們還須要作大量的額外工做。
1.適用場景
選擇React而不是別的框架還有一個重要的緣由:React的思想不侷限於前端領域,它還有React Native、React VR 等,它們能夠在不一樣的平臺之上運行類React的View層。使用與React語法相似的React Native,咱們能夠編寫出原生的移動應用。此外,咱們還能夠在web應用程序與iOS、Android應用程序之間,共享大部分業務邏輯。
如閱文集團在其網站起點海外版中,採用了React對原有的應用進行重構。其緣由是,因爲以前的App部分採用Hybrid架構模式,所以便採用了React Native來解決性能問題。React Native不只能解決開發上的性能瓶頸問題,還適合前端開發人員上手開發應用。
阿里巴巴的一些部門(如智能服務事業部)裏採用React框架的主要緣由是生態,其在公司內部已經有大量的與React相關的基礎設施如Ant Design、Ant Design Pro、及Fusion等UI組件庫。如Ant Design Pro則很是適合中臺前端的解決方案設計。
與此同時,出現一些相關框架好比ReactXP,能夠在共享邏輯的基礎上實現跨多個目標平臺共享視圖定義、樣式和動畫、而不須要作出太多修改,進一步實現代碼在原生應用於Web應用的複用。隨着這項技術在不一樣平臺如VR的發展,在遙遠的將來也能夠實現複用業務邏輯及View層。前端