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


希望能透過「React框架白話文運動」系列文章,利用口語化語表以及簡單的程式碼範例,能讓讀者更明白React的各種應用。 系列文章會講述以下: 1. 了解 ES6 JavaScript 語法 2. 了解 React 的運作原理 3. 了解 React 的狀態管理 4. 使用 React Hook管理狀態並且存取資料
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
這一篇會介紹非常重要的 JavaScript 函式概念 - 高階函式(Higher-order function),高階函數是將一個或多個函數作為參數,或將一個函數作為結果返回的函數。在本文中,我們將深入探討什麽是高階函數、使用高階函數的好處以及如何在實際應用中使用高階函數,函式導向是什麼?
歡迎來到 React 白話文運動第三篇,今天我們將深入探討 JavaScript 中的非同步操作,並介紹兩個重要的關鍵字:Async 與 Await。在這篇文章中,我們將透過實例演示非同步操作的概念,以及如何使用 Promise、Fetch、Async 和 Await 來更有效地處理非同步程式。
今天會接續介紹 JS ES6 其他新穎的語法,物件解構(Object Destructuring)物件語法強化(Object Literal Enhancement)陣列解構(Array Destructuring)延展運算子(Spread Operator)。
在進入到 React 前端框架之前,幫讀者複習有關 JavaScript 的知識。此篇著重,JavaScript 的歷史、let & const & var 差異、樣板字面值( Template Literals )、箭頭函式( Arrow Function )JS ES6 一個非常重要的前置知識。
這一篇會介紹非常重要的 JavaScript 函式概念 - 高階函式(Higher-order function),高階函數是將一個或多個函數作為參數,或將一個函數作為結果返回的函數。在本文中,我們將深入探討什麽是高階函數、使用高階函數的好處以及如何在實際應用中使用高階函數,函式導向是什麼?
歡迎來到 React 白話文運動第三篇,今天我們將深入探討 JavaScript 中的非同步操作,並介紹兩個重要的關鍵字:Async 與 Await。在這篇文章中,我們將透過實例演示非同步操作的概念,以及如何使用 Promise、Fetch、Async 和 Await 來更有效地處理非同步程式。
今天會接續介紹 JS ES6 其他新穎的語法,物件解構(Object Destructuring)物件語法強化(Object Literal Enhancement)陣列解構(Array Destructuring)延展運算子(Spread Operator)。
在進入到 React 前端框架之前,幫讀者複習有關 JavaScript 的知識。此篇著重,JavaScript 的歷史、let & const & var 差異、樣板字面值( Template Literals )、箭頭函式( Arrow Function )JS ES6 一個非常重要的前置知識。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
前言 create react app 是一個可以快速設定 react 專案的一個工具,在建立專案時已經把 babel,webpack 都已經預先封裝設置好,如果我們要修改 webpack alias 設定該如何設定呢 什麼是 alias alias 在 webpack 設定意義叫做,檔案路徑
Thumbnail
本文將引導您使用簡單的 Header 組件,學習如何使用 render 和 screen 來渲染和查詢元素。我們將探索如何測試文字和字元計數功能,並使用 userEvent 模擬使用者操作。了解如何使用斷言來確保測試結果正確。同時,我們將處理包含 fetch 的異步測試,並介紹 waitFor 函數
Thumbnail
React 表單驗證是一種技術與使用者體驗的設計,讓使用者能夠即時檢查輸入的資料並修正,提升使用者的使用體驗,並確保資料的正確性。
Thumbnail
useContext 是一種 React hook,讓我們能夠直接取用其他元件的 Context,而無須層層傳遞 props,進而使程式碼簡潔易讀。
Thumbnail
前言 嗨,各位懷舊遊戲愛好者!今天要跟大家分享一個有趣的主題:如何利用React和Pixi.js這兩大神兵利器,重塑我們那個年代的經典紅白機打磚塊遊戲! 先跟大家簡單科普一下,React是一個超級火爆的前端框架,能讓我們輕鬆創建可重用的UI組件,組件間的狀態管理也相當方便。。。
Thumbnail
React Hook onclick call a callback function with params, and change css style example: 本筆記參考: 1. https://www.codegrepper.com/code-examples/javascrip
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
接續上一篇,navbar元件其實寫的不是很好,還不能說是可真正reuse,我們把程式改成這樣,透過props傳入navbar的items,定義好navbar title, li的href/name/active等等,就可以達到navbar元件無須改code就能重用的目的! Navbar 元件中用m
Thumbnail
接續上一篇,這邊要來寫一個React hello world app,最後安裝webpack-dev-server來提升開發效率。 使用npm安裝react, react-dom: $ npm install react react-dom --save dependencies下紀錄的是生產環境會
Thumbnail
React開發有兩種方式,一種是使用CDN方式include react的官方lib,然後使用babel來將JSX編譯成瀏覽器看得懂的javascript。 但是在react中還會使用到sass, scss等等,還需要額外編譯成css瀏覽器才看得懂。 而webpack的誕生,就是為了解決上述的問題,
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
前言 create react app 是一個可以快速設定 react 專案的一個工具,在建立專案時已經把 babel,webpack 都已經預先封裝設置好,如果我們要修改 webpack alias 設定該如何設定呢 什麼是 alias alias 在 webpack 設定意義叫做,檔案路徑
Thumbnail
本文將引導您使用簡單的 Header 組件,學習如何使用 render 和 screen 來渲染和查詢元素。我們將探索如何測試文字和字元計數功能,並使用 userEvent 模擬使用者操作。了解如何使用斷言來確保測試結果正確。同時,我們將處理包含 fetch 的異步測試,並介紹 waitFor 函數
Thumbnail
React 表單驗證是一種技術與使用者體驗的設計,讓使用者能夠即時檢查輸入的資料並修正,提升使用者的使用體驗,並確保資料的正確性。
Thumbnail
useContext 是一種 React hook,讓我們能夠直接取用其他元件的 Context,而無須層層傳遞 props,進而使程式碼簡潔易讀。
Thumbnail
前言 嗨,各位懷舊遊戲愛好者!今天要跟大家分享一個有趣的主題:如何利用React和Pixi.js這兩大神兵利器,重塑我們那個年代的經典紅白機打磚塊遊戲! 先跟大家簡單科普一下,React是一個超級火爆的前端框架,能讓我們輕鬆創建可重用的UI組件,組件間的狀態管理也相當方便。。。
Thumbnail
React Hook onclick call a callback function with params, and change css style example: 本筆記參考: 1. https://www.codegrepper.com/code-examples/javascrip
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
接續上一篇,navbar元件其實寫的不是很好,還不能說是可真正reuse,我們把程式改成這樣,透過props傳入navbar的items,定義好navbar title, li的href/name/active等等,就可以達到navbar元件無須改code就能重用的目的! Navbar 元件中用m
Thumbnail
接續上一篇,這邊要來寫一個React hello world app,最後安裝webpack-dev-server來提升開發效率。 使用npm安裝react, react-dom: $ npm install react react-dom --save dependencies下紀錄的是生產環境會
Thumbnail
React開發有兩種方式,一種是使用CDN方式include react的官方lib,然後使用babel來將JSX編譯成瀏覽器看得懂的javascript。 但是在react中還會使用到sass, scss等等,還需要額外編譯成css瀏覽器才看得懂。 而webpack的誕生,就是為了解決上述的問題,