目錄
01. React 出現的時代背景
02. 虛擬DOM
03. 什麼是元件化?
04. 聲明式程式碼
05. 單向資料流
06. 純粹的JavaScript語法
07. 小結
首頁 web前端 js教程 React的使用:react框架的五大特點

React的使用:react框架的五大特點

Jul 20, 2018 am 10:34 AM
javascript react.js

這篇文章跟大家介紹的內容是關於React的使用:react框架的五大特點,有著一定的參考價值,有需要的朋友可以參考一下。

01. React 出現的時代背景

世界上的事情都有因才有果,一個框架的出現也必然離不開特定的時代背景。而對於React 而言,不得不提的時代背景主要有這麼兩條:

  1. 大量業務邏輯由後端實作改為前端實作:AJAX技術的出現促使人們追求更流暢的Web互動體驗,使得大量複雜的業務邏輯從後端開發改為由前端開發實現,這使得前端程式碼量呈幾何式增加,量變引起質變,如何組織管理這種量級的前端程式碼?如何更好的提升應用效能?借鑒幾十年來後端開發的經驗,毫不意外,答案是使用大型前端框架

  2. 對於邏輯複雜的SPA應用,原有前端框架表現不佳:在React 問世之前,已經有backbone.jsAngular.js 等成熟的大型前端框架了,然而Facebook 的工程師們發現,在面對複雜的業務場景(例如:頻繁操作DOM)時,這些框架都無法帶來良好的頁面性能,於是他們打算著手自己開發一個框架來解決這個問題,所開發出的框架即是React,而對於這一問題的解決方案則是:使用虛擬DOM

02. 虛擬DOM

虛擬DOM 的想法其實不難理解:我們知道頻繁的DOM 操作會導致瀏覽器對DOM 樹進行大量計算,這是前端最重要的效能瓶頸。因此,只要我們能夠合併多次的 DOM 操作,然後“畢其功於一役”,適時的,一次性的對 DOM 樹集中進行一次操作,就可以大大提升前端性能。

對於 React 而言,實現這一思路的方案即是使用 虛擬 DOM。我們所謂的 DOM 樹其實就是一個以樹狀結構嵌套的 JavaScript 物件。而在瀏覽器中,DOM 樹的改動會造成瀏覽器一系列的計算,因此我們可以基於現有的DOM 樹結構,克隆出一份一模一樣的DOM 樹,即“虛擬DOM ”,將所有的改動都實作在這棵虛擬DOM 上,然後統一合併至瀏覽器中的DOM 樹以解決先前所提及的效能瓶頸。

雖然理解起來不難,但在這個過程中其實牽扯到很多複雜的情況以及一些演算法上的難點,足夠開一篇新的文章講解,在這裡就先點到為止,就此不表了。

03. 什麼是元件化?

元件化是一種程式碼設計模式,它表現為你能夠將一些簡單的函數建構成一個更複雜的函數加以使用。

元件化有兩個顯著的特點:

  1. 封裝:一個元件所需的資料封裝於元件內部;

  2. #組合:一個元件可以與其他元件透過組合的方式實現更複雜的業務邏輯;

#而React 最棒的一點就在於在React 中一切UI 元素都是元件,而元件又只是一個JavaScript 函數。但相較於傳統函數接收一些參數並傳回一個值的模式而言,React 函數將會接收一些參數,傳回介面中的 UI 元素。

就像一個好的函數應該符合「DOT」(Do One Thing)原則,一個好的React 元件也不能混雜其他元件的業務邏輯,我們應該盡量讓React 元件保持簡單,從而讓複雜的React 元件的內部邏輯變得清晰。

下面這個公式可以很好的表達在React 中「視圖是對資料的渲染」的組件化思想:

UI = render(data)
登入後複製

這樣一來,在React 中,構成複雜視圖的方式就變得很簡單:組合元件;

04. 聲明式程式碼

聲明式程式碼指的是:讓開發者按照“我要做什麼”,而不是「我要讓電腦做什麼」去思考如何實現業務需求。

讓我們簡單比較一下「宣告式程式碼」與「命令式程式碼」的不同:

  • #指令式程式碼:
    感受到天氣太熱,編寫程式碼:

    1. 拿起空调遥控器;
    2. 打开空调;
    3. 设置温度为 27 摄氏度;
    登入後複製
  • 聲明式程式碼:
    感受到天氣太熱,寫程式碼:

    1. 调用“开空调(27)”函数;
    登入後複製

看起來,聲明式程式碼不過是對封裝了的命令式程式碼進行呼叫,但本質上,這是一種更棒的程式設計思維,它能夠讓我們不再僅僅著眼於如何透過程式碼實現功能,而是更多的思考為了實現業務邏輯,程式碼需要哪些功能(函數),對功能的設計,和功能之間的關係的思考,讓我們的程式碼邏輯更加清晰,富有秩序。

05. 單向資料流

在React 中,資料的組織形式是樹狀的,從上到下單向流動(對應DOM樹),之所以這樣設計,是因為:資料流更清晰,元件的狀態就更可控

對於業務邏輯複雜的單頁應用而言,前端所承接的資料量很大,資料之間的關係也錯綜複雜,再加上React 採用元件式開發,不同UI 根據不同資料產生變化,如果沒有一個清晰,合理的資料流管理方式,最後的程式碼只能是一團糟,一旦UI 或資料出現錯誤將很難排查出錯源到底在哪裡。

有鑑於此,React 使用「單向資料流」的方式,只允許資料從父元素流到子元素。

React 單向資料流的機制大致如下:資料被儲存在父級元件上,並且向下流動至子元件。雖然資料儲存在父級元件上,但是父級與子級的元件都可以使用這個資料。但是,如果數據需要更新,那麼只有父級元件應該去更新,如果子元件需要修改數據,他也只能透過發送更新的數據給父級元件,那裡才是數據真正更新的地方。一旦資料被父級元件更新了,子級元件將會接收到新的資料。

單向資料流雖然聽起來增加了額外的工作量,但卻讓開發者更容易搞清楚應用程式是如何運作的。

06. 純粹的JavaScript語法

我們很容易就忽略React 的這個特點,即在React 中,沒有任何特殊的專有的React 語法需要理解和記憶,所有的元件,資料操作,業務邏輯都是透過使用JavaScript 語法來實現的。

這意味著你想要使用 React 只需理解 React 的思想和幾個關鍵的 API 就可以立即開始使用 React 進行複雜應用的開發。而 React 也鼓勵你使用函數式程式設計思想進行開發,你可以在 React 開發中,使用你的任何函數式程式設計技巧。

07. 小結

在本文中我們先談到了React 框架產生的時代背景,接著解釋了React 的五大特點:

  1. 虛擬DOM;

  2. 元件化;

  3. 聲明式程式碼;

  4. 單向資料流;

  5. 純粹的JavaScript 語法;

相關推薦:

關於Node中事件循環的解析

以上是React的使用:react框架的五大特點的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1273
29
C# 教程
1256
24
如何使用WebSocket和JavaScript實現線上語音辨識系統 如何使用WebSocket和JavaScript實現線上語音辨識系統 Dec 17, 2023 pm 02:54 PM

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術 WebSocket與JavaScript:實現即時監控系統的關鍵技術 Dec 17, 2023 pm 05:30 PM

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統 如何利用JavaScript和WebSocket實現即時線上點餐系統 Dec 17, 2023 pm 12:09 PM

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統 如何使用WebSocket和JavaScript實現線上預約系統 Dec 17, 2023 am 09:39 AM

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript與WebSocket:打造高效率的即時天氣預報系統 JavaScript與WebSocket:打造高效率的即時天氣預報系統 Dec 17, 2023 pm 05:13 PM

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

簡易JavaScript教學:取得HTTP狀態碼的方法 簡易JavaScript教學:取得HTTP狀態碼的方法 Jan 05, 2024 pm 06:08 PM

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

javascript如何使用insertBefore javascript如何使用insertBefore Nov 24, 2023 am 11:56 AM

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。

如何在JavaScript中取得HTTP狀態碼的簡單方法 如何在JavaScript中取得HTTP狀態碼的簡單方法 Jan 05, 2024 pm 01:37 PM

JavaScript中的HTTP狀態碼取得方法簡介:在進行前端開發中,我們常常需要處理與後端介面的交互,而HTTP狀態碼就是其中非常重要的一部分。了解並取得HTTP狀態碼有助於我們更好地處理介面傳回的資料。本文將介紹使用JavaScript取得HTTP狀態碼的方法,並提供具體程式碼範例。一、什麼是HTTP狀態碼HTTP狀態碼是指當瀏覽器向伺服器發起請求時,服務

See all articles