iT邦幫忙

2026 iThome 鐵人賽

DAY 19
0
AI 自動化

AI 情境英文口語教練——結合 LLM 與自動化工作流的個人化英文學習系統系列 第 19 篇

Day 19|認識 React / Vue 等前端框架與基本網頁結構

  • 分享至 

  • xImage
  •  

這幾天把後端那條線摸過一輪——FastAPI 的概念、路由、資料模型都理清楚了。今天要切到另一條線:使用者實際會看到、會操作的畫面要怎麼做。這塊完全是新的領域,所以今天不急著選定要用哪個框架,先搞懂基本概念。

先搞懂一個最基本的問題:為什麼需要「框架」

一開始的疑問跟 Day 17 學 FastAPI 時很像:網頁不就是 HTML、CSS、JavaScript 嗎,為什麼還需要 React 或 Vue 這種額外的工具?

查了資料之後理解到,問題出在「畫面會一直變」這件事。這個專題的聊天介面,每次使用者送出一句話,畫面上就要多一則訊息、AI 回應時要有個等待動畫、對話紀錄要往下捲動——如果純粹用 JavaScript 手動操作畫面上的每一個元素,程式碼會變得又亂又難維護。

React、Vue 這類框架解決的就是這個問題:讓畫面變成「資料的呈現結果」。只要改資料(例如把新訊息加進對話紀錄這個變數),畫面會自動跟著更新,不用自己一行一行去操作「這裡要新增一個文字框、那裡要捲動」。

React 跟 Vue,今天看到的差異

跟 Day 2 比較 GPT、Gemini、Claude 時有點像,今天也簡單比較了這兩個最常聽到的前端框架:

React:由 Meta 開發,生態系龐大,很多公司在用,網路上的資源和範例也最多
Vue:學習曲線據說比較平緩,語法更接近一般 HTML,對新手相對友善

兩者要解決的問題是一樣的——都是「讓畫面跟著資料自動更新」,差別比較偏向寫法風格和社群生態。今天沒有馬上決定要用哪一個,但筆記先記下來:之後選擇時,評估標準會是「資源多不多、範例好不好找」,而不是糾結哪個「比較強」。

核心概念:元件(Component)

今天理解的最重要概念是「元件」。簡單說,就是把畫面拆成一個一個可以重複使用的小積木。

對照這個專題要做的聊天介面,可以想像拆成這幾個元件:

一則訊息的外觀(使用者說的話、AI 回的話,長相不同)
整個對話紀錄的捲動區塊
底下的輸入框和送出按鈕

每個元件各自管理自己長什麼樣子,组合起來就是完整的畫面。這個拆法讓我想到 Day 7 學的 n8n 的 Node 概念——都是把一個複雜的整體,拆成一個一個獨立、可以重複使用的小單位,只是一個是用來拆「流程」,一個是用來拆「畫面」。

另一個關鍵概念:狀態(State)

今天第二個重要概念是「狀態」。狀態指的是「會隨著使用者操作而改變的資料」,例如:

目前輸入框裡打了什麼字
整個對話紀錄目前有哪些訊息
AI 現在是不是正在「思考中」(要不要顯示等待動畫)

今天理解到的核心邏輯是:畫面不會自己變,是狀態變了,畫面才跟著重新畫一次。 跟 Day 17 學的 FastAPI 資料模型有點異曲同工——後端用資料模型描述「資料長什麼樣」,前端則是用狀態描述「畫面此刻該呈現的資料是什麼」,兩邊概念上其實滿接近的。

今天釐清的流程:畫面跟後端怎麼接起來

把這幾天學的東西兜在一起,今天想像出一個初步的流程:

使用者在輸入框打字 → 這是一個狀態在變化
按下送出 → 觸發一個函式,把輸入框的內容打包成 JSON
呼叫 Day 17 準備的後端 API(用 Day 16 學的 POST 方式)
等待回應的時候,「思考中」狀態打開,畫面顯示等待動畫
拿到後端回傳的 JSON → 更新對話紀錄的狀態 → 畫面自動多出一則新訊息

把這個流程寫下來之後,前後端兩條原本分開學的線,第一次真正在腦中接成一條完整路徑。


上一篇
Day 17|認識 FastAPI,了解 Python 建立後端 API 的方式
下一篇
Day 19|認識 React / Vue 等前端框架與基本網頁結構
系列文
AI 情境英文口語教練——結合 LLM 與自動化工作流的個人化英文學習系統 共 22 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言