React 運作原理 – React 白話文運動 05

更新於 發佈於 閱讀時間約 8 分鐘

前言

React 是開發網頁、手機前端最流行的 JavaScript 套件之一。React 由 Meta(前身為 Facebook)開發,使開發人員能夠創建可重覆使用的元件來完成前端頁面。

不過這邊要注意,嚴格說起來,React 並不是一個框架。這是因為它只負責呈現 UI 的元件。不過,React 為 Angular 和 Vue 等框架提供了另一種解決方式,使我們可以與它一起完成覆雜的前端頁面功能。

這篇文章將會解釋 React 的工作原理、特性,並講解前端開發者使用 React.js 的好處。

為什麼需要前端框架?

在回答這一個問題,不妨思考一個問題,為何我們需要使用前端框架?在網頁開發領域來說,前端框架確實是現代才有的工具,而不管是哪一個技術或是工具都是為了解決某個問題而被開發出來的。在舊有的網頁,HTML、CSS 甚至只需要一些些的 JavaScript 就可以完成一個靜態頁面。

然而隨著科技越來越發達,越來越多人使用網路後,網頁功能也越來越複雜,無論是會員註冊、登入、地圖功能、論壇發文留言功能…等等,早已不是一個簡單的網頁,就可以解決的。

因此開始有了前端工程師以及後端工程師,前端工程師負責 UI \ UX、視覺化介面、資料與狀態視覺化…等等。後端工程師負責資料處理、資料庫操作、伺服器管理、 API 開發…等等。

也因為頁面越來越複雜,不再是使用 JavaScript 或是 Jquery 就有辦法處理各種複雜的前端狀態,因此有了框架的誕生。

React、Vue、Angular 則是為了處理複雜的前端狀態而被發展出來的。

什麼是 React JavaScript ?

React 是一個功能強大的 JavaScript 套件,可通過模組化的方式創建前端介面。它通過引入宣告式和使用模組化的方法徹底改變了前端 UI 開發。

與 jQuery 中的 DOM 操作不同,React 使用 Virtual DOM 來優化性能。 React JavaScript(或 React.js)可處理覆雜的前端畫面,為開發者提供了一種結構化的高效方法。

React 運作原理?

React 引入了 JSX,這是一種語法糖,可無縫結合 JavaScript 和 HTML 程式碼。JSX 標簽類似於 XML,但有一些不同。

例如:React 使用 className 代替了 CSS 的傳統 class 屬性。數字值和表達式用大括號括起來,而引號表示字符串,這與 JavaScript 類似。

React 元素

React 可以透過其內建的函式,創建出各種 HTML 的 DOM(Document Object Model),因此我們先來複習一下基本的 HTML 語法。

<body>
<h1>Hello World</h1>
<ul>
<li>dog</li>
<li>cat</li>
</ul>
</body>

由上面的 HTML 的結構可以知道 HTML 元素監視以樹狀結構相連的,且有一個根元素(root element)有兩個子元素(child element),第一個子元素為 h1,第二個子元素為 ul,並且如果端看 ul 清單來說的話,ul 本身也是一個父元素(parent element),裡面包含了兩個 li 的子元素。

我們是透過這些 DOM 來讓瀏覽器知道我們的頁面長什麼樣子的,因此 React 的概念也是如此,透過 React 開發的函數,建立這些元素,再將這些元素組合起來變成一個大型的 HTML,並且顯示頁面。

React DOM

當我們在創建一個元素後,我們需要將創建完成的 DOM 呈現在頁面中,我們稱這個動作為渲染(Render)。我們可以使用 ReactDOM 內建的 render 將我們已創建的 React 元素渲染(Render)至瀏覽器中。

const dish = React.createElement("h1", "Hello World");
ReactDOM.render(dish, document.getElementById("root"));

透過以上的JavaScript程式碼,會先建立一個HTML元素如下,並且將這個元素傳入HTML裡面。

<div id="root">
<h1>Hello World</h1>
</div>

當然上面是單一比較簡單的 DOM,這邊也提供一個 ReactDOM 中,render list 方式建立的 HTML 範例。

const hello = React.createElement("h1", "Hello")
const world = React.createElement("h1", "World")

ReactDOM.render([hello, world], document.getElementById("root"))

為什麽使用 React.js?

全球數百家大公司,都在使用 React 製作自己的系統,以下也會簡單介紹使用React 的優點。

易於使用

通常具有 JavaScript 技術的 Web 開發工程師可以快速學會如何使用 React,因為它依賴於 Pure JavaScript 並也有模組化以及物件導向的概念,因此上手難度也會相對較低。

如果需要進一步學習 JavaScript,許多網站都提供免費的教學,可以先了解  JavaScript 的基礎知識後,再閱讀 React,以簡化前端開發流程。

可重用元件

React 可讓您重覆使用為其他應用程式的元件。舉例來說:如果開發了某一個頁面的表單,其他頁面如果需要使用,可以直接使用該表單的元件,不需要再開發一次。

此外,React 還可以在其他元件中繼續使用更小型的元件,以完成複雜的功能,而不會有太多肥大的程式碼。每個 React 元件都有自己的狀態,因此可以更容易維護。

簡易的前端元件實作

React 可將 JavaScript 對象與 HTML 語法和標記相結合。還可以寫元件,並通過 JSX (之後的章節也會繼續講解此名詞),將 React 添加到現有的 HTML 頁面。 JSX 簡化了多功能呈現,也能保持程式碼簡潔,又不會限制系統的功能。

高性能

Virtual Dom 允許 React 快速地更新 DOM Tree。通過在特別的機制以及演算法,React 可以避免過多的重新渲染,以免影響性能。

搜索引擎優化

React 可通過提高性能和縮短 JavaScript 程式碼加載時間來改善加在時間,近一步搜索引擎優化(SEO)。Virtual DOM 的實現有助於加快頁面速度。

它還能通過 Server Side 優化 SEO。解決了純 JavaScript 網站所面臨的挑戰之一,因為搜索引擎通常會發現這些網站難以抓取且耗時較長。

結語

這一篇正式進入了 React 世界,講解了 React 運行的原理,包含是如何透過JavaScript 產生 HTML DOM,變成一個頁面的。

React 團隊的不斷改進使 React 更容易使用,能與各種技術結合,包括 Bootstrap、Tailwind CSS、Axios、Redux 和 Firebase。

在 Node.js 和 NGINX 的協助下,在 VPS 上部署 React 應用程序也很簡單。

如果有任何建議與疑問也歡迎留言!

如果喜歡此系列文章,請不吝於按下喜歡及分享,讓更多人看到唷~


備註

目前文章已移至  React 運作原理 – React 白話文運動 05

未來文章一併更新於此網站 Hogan.B Lab

並且包含多語系 繁體中文英文日文簡體中文

觀看分類:React 白話文運動其他系列



React 白話文運動系列

JavaScript 高階函式 – React 白話文運動 04

JavaScript Async Await – React 白話文運動 03

JavaScript ES6 Object – React 白話文運動 02

JavaScript ES6 – React 白話文運動 01


留言
avatar-img
留言分享你的想法!
Sam Huang-avatar-img
2023/12/09
稍微補充下,路徑上其實是 JSX -> virtual DOM -> DOM 或者 HTML -> DOM,整個轉譯過程成 JSX 其實不太跟 HTML 有掛勾 ~
沒錯! 感謝 Sam Huang 協助補充~
avatar-img
Hogan|軟體工程師沙龍
18會員
13內容數
希望能透過「React框架白話文運動」系列文章,利用口語化語表以及簡單的程式碼範例,能讓讀者更明白React的各種應用。 系列文章會講述以下: 1. 了解 ES6 JavaScript 語法 2. 了解 React 的運作原理 3. 了解 React 的狀態管理 4. 使用 React Hook管理狀態並且存取資料
2023/12/30
React Props - React 白話文運動。這一篇則會針對 React 語法進一步做講解, 前幾篇也學會了如何建立一個 React 元件,並且學會了元件之間有父子元件的關係。這篇會介紹 React Props 的概念,包含了:React 元件宣告、React Props。
Thumbnail
2023/12/30
React Props - React 白話文運動。這一篇則會針對 React 語法進一步做講解, 前幾篇也學會了如何建立一個 React 元件,並且學會了元件之間有父子元件的關係。這篇會介紹 React Props 的概念,包含了:React 元件宣告、React Props。
Thumbnail
2023/12/14
建立React專案-React白話文運動:前一篇文章介紹了三個名詞,分別是:Babel 是什麼?Webpack 是什麼?Npm 是什麼?這一篇則是會手把手建立 React 專案,包含:建置環境、建立 React 專案、啟動專案、如何使用 React 擴充套件。這邊也包含:官方 CRA 建置環境以及自
Thumbnail
2023/12/14
建立React專案-React白話文運動:前一篇文章介紹了三個名詞,分別是:Babel 是什麼?Webpack 是什麼?Npm 是什麼?這一篇則是會手把手建立 React 專案,包含:建置環境、建立 React 專案、啟動專案、如何使用 React 擴充套件。這邊也包含:官方 CRA 建置環境以及自
Thumbnail
2023/12/11
前言這一篇會針對三個名詞做一些解釋,這些名詞是建立 React 專案,需要會的工具,包含了:Babel 是什麼?Webpack 是什麼?Npm 是什麼?當然主要介紹的是使用這些工具的概念,但是還是有其他工具可以做選擇,例如:Npm 之於 Yarn。這一篇會針對三個名詞做一些解釋,這些名詞是建立 R
Thumbnail
2023/12/11
前言這一篇會針對三個名詞做一些解釋,這些名詞是建立 React 專案,需要會的工具,包含了:Babel 是什麼?Webpack 是什麼?Npm 是什麼?當然主要介紹的是使用這些工具的概念,但是還是有其他工具可以做選擇,例如:Npm 之於 Yarn。這一篇會針對三個名詞做一些解釋,這些名詞是建立 R
Thumbnail
看更多
你可能也想看
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
孩子寫功課時瞇眼?小心近視!這款喜光全光譜TIONE⁺光健康智慧檯燈,獲眼科院長推薦,網路好評不斷!全光譜LED、180cm大照明範圍、5段亮度及色溫調整、350度萬向旋轉,讓孩子學習更舒適、保護眼睛!
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
前言 現在的前端需求已經越來越高,要考慮HTML及CSS的切版美觀程度,以及React以及Flutter所提出的元件(Componet、widget)觀念,也就是將元件模組化,使元件可以更動態的被程式運行,而不用靜態的客製化每一個介面。開發一個好的元件可以提升整體的開發速度,讓任何使用元件的開發者
Thumbnail
前言 現在的前端需求已經越來越高,要考慮HTML及CSS的切版美觀程度,以及React以及Flutter所提出的元件(Componet、widget)觀念,也就是將元件模組化,使元件可以更動態的被程式運行,而不用靜態的客製化每一個介面。開發一個好的元件可以提升整體的開發速度,讓任何使用元件的開發者
Thumbnail
React Props - React 白話文運動。這一篇則會針對 React 語法進一步做講解, 前幾篇也學會了如何建立一個 React 元件,並且學會了元件之間有父子元件的關係。這篇會介紹 React Props 的概念,包含了:React 元件宣告、React Props。
Thumbnail
React Props - React 白話文運動。這一篇則會針對 React 語法進一步做講解, 前幾篇也學會了如何建立一個 React 元件,並且學會了元件之間有父子元件的關係。這篇會介紹 React Props 的概念,包含了:React 元件宣告、React Props。
Thumbnail
建立React專案-React白話文運動:前一篇文章介紹了三個名詞,分別是:Babel 是什麼?Webpack 是什麼?Npm 是什麼?這一篇則是會手把手建立 React 專案,包含:建置環境、建立 React 專案、啟動專案、如何使用 React 擴充套件。這邊也包含:官方 CRA 建置環境以及自
Thumbnail
建立React專案-React白話文運動:前一篇文章介紹了三個名詞,分別是:Babel 是什麼?Webpack 是什麼?Npm 是什麼?這一篇則是會手把手建立 React 專案,包含:建置環境、建立 React 專案、啟動專案、如何使用 React 擴充套件。這邊也包含:官方 CRA 建置環境以及自
Thumbnail
React 是開發網頁、手機前端最流行的 JavaScript 套件之一。React 由 Meta 開發,使開發人員能夠創建可重覆使用的元件來完成前端頁面。JSX 也是目前我們比較常看到的 React 寫法 ,因此接下來會介紹,JSX 是什麼?JSX 語法以及使用 JSX 建構 React 元件。
Thumbnail
React 是開發網頁、手機前端最流行的 JavaScript 套件之一。React 由 Meta 開發,使開發人員能夠創建可重覆使用的元件來完成前端頁面。JSX 也是目前我們比較常看到的 React 寫法 ,因此接下來會介紹,JSX 是什麼?JSX 語法以及使用 JSX 建構 React 元件。
Thumbnail
React 是開發網頁、手機前端最流行的 JavaScript 套件之一。React 由 Meta 開發。React 並不是一個框架。這是因為它只負責呈現 UI 的元件。不過,React 為 Angular 和 Vue 等框架提供了另一種解決方式,使我們可以與它一起完成覆雜的前端頁面功能。
Thumbnail
React 是開發網頁、手機前端最流行的 JavaScript 套件之一。React 由 Meta 開發。React 並不是一個框架。這是因為它只負責呈現 UI 的元件。不過,React 為 Angular 和 Vue 等框架提供了另一種解決方式,使我們可以與它一起完成覆雜的前端頁面功能。
Thumbnail
JavaScript 的關鍵價值 JavaScript 是一種強大且廣泛使用的編程語言,具有許多價值和應用。以下整理 JavaScript 的關鍵價值: 客戶端網頁開發、跨平台開發: JavaScript 是種瀏覽器的語言,可實現動態網頁效果,並通過操作 HTML 和 CSS,使網頁互動性提昇,提供
Thumbnail
JavaScript 的關鍵價值 JavaScript 是一種強大且廣泛使用的編程語言,具有許多價值和應用。以下整理 JavaScript 的關鍵價值: 客戶端網頁開發、跨平台開發: JavaScript 是種瀏覽器的語言,可實現動態網頁效果,並通過操作 HTML 和 CSS,使網頁互動性提昇,提供
Thumbnail
Create React App 提供了快速建立React App環境的方法: 1. 安裝node.js 2. 建立React project: $ npx create-react-app my-app 3. 啟動app $ cd my-app $ npm start npm start之後即打
Thumbnail
Create React App 提供了快速建立React App環境的方法: 1. 安裝node.js 2. 建立React project: $ npx create-react-app my-app 3. 啟動app $ cd my-app $ npm start npm start之後即打
Thumbnail
本文章目的是希望可以用最簡單的範例,來讓大家了解React到底是什麼東西,有什麼好處,並且套用bootstrap的navbar,加上自己客製的css,來達到component重用的目的! 用React來開發網頁,必須把目標拆解成一個個component,最後組合起來就成為一個網站! 假如我們目標是要
Thumbnail
本文章目的是希望可以用最簡單的範例,來讓大家了解React到底是什麼東西,有什麼好處,並且套用bootstrap的navbar,加上自己客製的css,來達到component重用的目的! 用React來開發網頁,必須把目標拆解成一個個component,最後組合起來就成為一個網站! 假如我們目標是要
Thumbnail
接續上一篇,這邊要來寫一個React hello world app,最後安裝webpack-dev-server來提升開發效率。 使用npm安裝react, react-dom: $ npm install react react-dom --save dependencies下紀錄的是生產環境會
Thumbnail
接續上一篇,這邊要來寫一個React hello world app,最後安裝webpack-dev-server來提升開發效率。 使用npm安裝react, react-dom: $ npm install react react-dom --save dependencies下紀錄的是生產環境會
Thumbnail
如果有接觸過網頁開發的讀者,或者會聽過很多不同的專有名詞,其中不少得Front-end (前端) 和 Back-end (後端)這兩個字詞。有一些網站可能只需要設計師和前端開發者,有些則需要後端開發者和測試人員等等,那究竟前端和後端如何分辨?首先,讓我們搞清楚前端開發是什麼一回事。
Thumbnail
如果有接觸過網頁開發的讀者,或者會聽過很多不同的專有名詞,其中不少得Front-end (前端) 和 Back-end (後端)這兩個字詞。有一些網站可能只需要設計師和前端開發者,有些則需要後端開發者和測試人員等等,那究竟前端和後端如何分辨?首先,讓我們搞清楚前端開發是什麼一回事。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News