1. 程式人生 > >React技術棧之為什麼選擇react

React技術棧之為什麼選擇react

React起源於Facebook公司的內容專案,該公司在嘗試用H5來建設Instagram網站的過程中發現,對於複雜前端h5效能下降明顯,在對市場的mvc框架分析後,依然無法找到滿足自己需求的框架,於是決定自己開發一套,於是就有了之後的React,React於2013年開發完成後被開源,一經發布迅速吸引了廣泛的關注。
React的設計思想極其獨特,其核心理念-虛擬Dom思想也在陸續被其他優秀框架引入,如Angular2,同時React效能優秀,程式碼邏輯簡單,適用面廣,又能用於移動端開發的React Native,受到越來越多人的認可和使用

虛擬DOM

在web開發中,我們通常面臨的是動態的頁面,隨著使用者的互動或與服務端的互動會產生的資料的變化,而資料的變化又會得的我們需要展示的內容有所變化, 以往我們是通過操作Dom元素予以調整來解決的,但頻繁或複雜的DOM操作通常對效能會產生較大的影響,針對這一問題,React引入了虛擬DOM機制:由使用者構建虛擬DOM,React負責將虛擬DOM渲染到瀏覽器中,虛擬DOM的核心思想可以概括成以下兩點:

提供一種更方便簡潔的方式操作DOM,提升開發效率

以前我們需要直接操作DOM,操作種類繁多,寫法複雜,而在React中可以用一個js物件來表示DOM結構,甚至一個元件,這個js物件可以是通過React的createElement方法,或者React的元件的建構函式來建立的,便捷易懂。

保證最小化的DOM操作,保證執行效率,提升效能

使用js物件來表示DOM結構後,我們可以將js物件構造出的DOM結構樹叫做虛擬DOM樹,當頁面發生資料變化而需要操作DOM節點時,會先掃描整個虛擬DOM樹,通過比較本次與上次虛擬DOM的具體差異,然後針對實際需要變化的部分進行實際的瀏覽器的DOM更新。虛擬DOM存的是記憶體資料,計算虛擬DOM的差異帶來的記憶體的消耗通常要遠遠小於多餘的DOM操作的開銷,所以這裡選擇增加一部分比較,來減小DOM渲染的開銷,從而提升效能。

在保證效能的同時,使用者無需關心具體某個DOM應該作何操作,而只需關係資料狀態,以及相應的資料狀態應該如何渲染到一個元件,除此之外的其他工作都由REACT高效自動的完成。

跨平臺

由於我們主要的操作物件是虛擬DOM,而無關實際的執行環境,如是否是瀏覽器,或瀏覽器的型別,所以只要有虛擬DOM到真實DOM的轉換器,就可以實現真實DOM的最終呈現,從而達到跨平臺的效果。如,從虛擬DOM到瀏覽器真實DOM的轉換通過react-dom實現,從虛擬DOM到移動APP的轉換工具通過react-native實現。

相關推薦

React技術為什麼選擇react

React起源於Facebook公司的內容專案,該公司在嘗試用H5來建設Instagram網站的過程中發現,對於複雜前端h5效能下降明顯,在對市場的mvc框架分析後,依然無法找到滿足自己需求的框架,於是決定自己開發一套,於是就有了之後的React,React於2

深入React技術setState詳解

丟擲問題 class Example extends Component { contructor () { super() this.state = { value: 0, index: 0 } } componentDidMount ()

如何從零學習 React 技術

教授 新人 註冊 將不 hat 前端 案例 產品 代碼   達人課是GitChat的一款輕閱讀產品,由特約講師獨家發布。每一個課程你都可獲得6-12篇的深度文章,同時可在讀者圈與講師互動交流。GitChat達人課,讓技術分享更簡單。    如何從零學習 React 技術棧 

重談react優勢——react技術回顧

alt 轉換函數 表現 組合 dom操作 ould 完成 itl 屬性 react剛剛推出的時候,講react優勢搜索結果是幾十頁。現在,react已經慢慢退火,該用用react技術棧的已經使用上,填過多少坑,加過多少班,血淚控訴也不下千文。今天,再談一遍react優勢,W

React 技術系列教程

上週中秋節,我待在家裡,寫完了 Redux 教程。 至此,《React 技術棧系列教程》算是比較完整了。 ES6 語法:教程 Babel:教程 React:教程,示例庫 Webpack:教程 React 專案腳手架:程

react 技術(全家桶)學習

專案地址 託管在 github 上的專案連結:https://github.com/uncleAndyChen/react-full-stack-learning 託管在 gitee 上的專案連結 :https://gitee.com/uncleAndyChen/react

React 技術學習,redux 知識點

如何合理地設計 state 把整個應用的狀態按照領域(Domain)分成若干子 state,子 state 之間不能儲存重複的資料。 state 以鍵值對的結構儲存資料,以記錄的 key/ID 作為記錄的索引,記錄中的其他欄位都依賴於索引。 state 中不能儲存可以通過已有資料計算而來

React 技術學習,js 知識點

相關函式 hasOwnProperty() 用來檢測一個物件是否含有特定的自身屬性;和 in 運算子不同,該方法會忽略掉那些從原型鏈上繼承到的屬性。 reduce Array的reduce()把一個函式作用在這個Array

《深入React技術》個人總結(打卡一)

雖說已經在用React寫了些專案,起初剛開始的時候並不喜歡react框架(之前是用vue的),到了後面才發現React的好處,深深陷進去了,所以買了本書《深入React技術棧》,細細解讀這款框架的魅力 今天閱讀了第一章節兩小節 1.1.1 React的簡介 react與angular等框

react技術實踐(1)

本文來自網易雲社群作者:汪洋背景最近開發一個全新AB測試平臺,思考了下正好可以使用react技術開發。實踐前技術準備首先遇到一個概念,redux。這貨還真不好理解,大體的理解:Store包含所有資料,檢視觸發一個Action,Store收到Action後,返回一個新的 Sta

React技術

React 是目前最熱門的前端框架。 Facebook 公司2013年推出現在最好的社群支援和生態圈大量的第三方工具 React 的優點 元件模式:程式碼複用和團隊分工虛擬 DOM:效能優勢移動端支援:跨終端 React 的缺點 學習曲線較陡峭全新的一套概念,與其

React 技術系列教程阮一峰

上週中秋節,我待在家裡,寫完了 Redux 教程。 至此,《React 技術棧系列教程》算是比較完整了。 ES6 語法:教程 Babel:教程 React:教程,示例庫 Webpack:教程 React 專案腳手架:程式碼庫 Flex 佈局:教程,示例 CSS Modules:教程,示例庫 Re

.net 技術高階開發

寫於之前,打算寫一個關於.net 技術棧之全系列的文章,分享記錄一下個人這些年來的技術儲備 形成一個.net web 開發面的概念。疑問?為什麼有這麼多.net 文章部落格,還是要寫?寫出來有什麼不同? 什麼時候完成全系列?答:因為軟體開發本來就是一個重複造輪子的事情

React進階路——React基礎

    JSX是一種用於描述UI的JavaScript擴充套件語法,React使用這種語法描述元件的UI。 1.基本語法 JSX的基本語法和XML語法相同,都是使用成對的標籤構成一個樹狀結構的資料。 const element = (     &

實時通訊RTC技術:視訊編解碼

1、前言 RTC(Real-time Communications),實時通訊,是一個正在興起的風口行業,經過短短一年的時間,已經有很多玩家進入了這個行業,最典型的應用就是直播連麥和實時音視訊通訊。但是,很多開發者對一些概念還是有混淆的,比如 RTC 與 WebRTC,R

react+redux+webpack+git技術

tps .net read nor 無法 mac icon ear es5 1 一、git bash here 2 mdkr 3 cnpm init -y 4 ls -a 5 ls -l 6 ls -la隱藏的也可查看 7 cat packag

React 專案的構建以及技術的應用

1、使用 react-app my-app 腳手架構建React 專案執行環境   當然這裡我們使用react 官方提供的webpack 腳手架工具,這也是大多人的選擇。如果您需要構建自己react 專案,便可大膽應用react 提供的create-r

React-Native學習筆記——技術及簡介

推薦的技術棧順序清單 1、阮一峰es6: http://es6.ruanyifeng.com/   es6中的新特性是後續內容的基礎,重點內容有let關鍵字、解構賦值、建構函式和原型鏈、Promise物件、yield關鍵字、Generator函式、aysnc/await等

React+Redux技術核心要點解析(中篇)

感謝作者郭永峰的授權釋出。 作者:郭永峰,前端架構師,現用友網路 FED團隊負責人,目前主要負責企業級應用前端技術平臺建設工作,在前端工程化實現、Node 應用開發、React技術、移動開發等方向有豐富實踐經驗。Github地址:https://gith

使用react+redux+react-redux+react-router+axios+scss技術從0到1開發一個applist應用

先看效果圖 github地址 github倉庫 線上訪問 初始化專案 #建立專案 create-react-app applist #如果沒有安裝create-react-app的話,先安裝 npm install -g create-react-app 目錄結構改造 |--config |--n