測驗:用 Vite 建立 React 專案
共 5 題,點選答案後會立即顯示結果
1. 使用 Vite 建立 React + TypeScript 專案時,應該使用哪個指令?
2. Vite 專案中,程式碼的進入點是哪個檔案?
3. HMR(Hot Module Replacement)的主要優點是什麼?
4. 在 Vite 專案結構中,<div id="root"></div> 的作用是什麼?
5. 執行 npm run build 後,Vite 會做什麼?
一句話說明
用一行指令建立 React 專案,開發時修改程式碼馬上看到結果。
前置知識
- 讀過本系列第 1 篇(了解什麼是 Vite)
- 已安裝 Node.js(18 以上版本)
最小範例:建立專案
打開終端機,執行這一行:
npm create vite@latest my-app -- --template react-ts
Code language: CSS (css)這行在幹嘛:
npm create vite@latest– 執行 Vite 的專案建立工具my-app– 專案資料夾名稱(可以改成你要的名字)--template react-ts– 使用 React + TypeScript 模板
執行後會看到:
Scaffolding project in /path/to/my-app...
Done. Now run:
cd my-app
npm install
npm run dev
照著做就對了:
cd my-app
npm install
npm run dev
瀏覽器打開 http://localhost:5173,看到 Vite + React 的歡迎畫面就成功了。
專案目錄結構
建立完成後,資料夾長這樣:
my-app/
├── node_modules/ # 套件安裝位置(不用管)
├── public/ # 靜態檔案(favicon 等)
├── src/ # 你的程式碼都放這裡
│ ├── App.tsx # 主要的 React 元件
│ ├── App.css # App 元件的樣式
│ ├── main.tsx # 程式進入點
│ ├── index.css # 全域樣式
│ └── vite-env.d.ts # TypeScript 型別定義
├── index.html # HTML 模板
├── package.json # 專案設定和相依套件
├── tsconfig.json # TypeScript 設定
└── vite.config.ts # Vite 設定
Code language: PHP (php)必看懂的檔案
1. src/main.tsx – 程式進入點
import React from 'react'
import ReactDOM from 'react-dom/client'
import App from './App.tsx'
import './index.css'
ReactDOM.createRoot(document.getElementById('root')!).render(
<React.StrictMode>
<App />
</React.StrictMode>,
)
Code language: JavaScript (javascript)逐行翻譯:
- 第 1-4 行:引入需要的東西
- 第 6 行:找到 HTML 裡 id 為 root 的元素,建立 React 根節點
- 第 7-9 行:把
<App />元件渲染到畫面上
2. src/App.tsx – 主元件
import { useState } from 'react'
import './App.css'
function App() {
const [count, setCount] = useState(0)
return (
<>
<h1>Vite + React</h1>
<button onClick={() => setCount((count) => count + 1)}>
count is {count}
</button>
</>
)
}
export default App
Code language: JavaScript (javascript)逐行翻譯:
- 第 1 行:從 React 引入 useState(管理狀態用)
- 第 5 行:建立一個狀態 count,預設值 0,用 setCount 來更新
- 第 8-13 行:回傳要顯示的畫面(JSX)
- 第 10-12 行:按鈕被點擊時,count 加 1
3. index.html – HTML 模板
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + React + TS</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
Code language: HTML, XML (xml)重點:
<div id="root"></div>– React 會把畫面渲染到這裡<script type="module" src="/src/main.tsx">– 直接載入 TypeScript 檔案!Vite 會即時轉換
體驗 HMR 熱更新
HMR(Hot Module Replacement)是 Vite 最強大的功能之一。
實驗看看
- 確保開發伺服器正在跑(
npm run dev) - 打開
src/App.tsx - 把
<h1>Vite + React</h1>改成<h1>Hello Vite!</h1> - 存檔
馬上看到瀏覽器更新了,不需要手動重新整理!
更神奇的是
- 點幾下按鈕,讓 count 變成 5
- 修改
<h1>的文字,存檔 - 看!count 還是 5,沒有被重置
這就是 HMR 的威力:只更新你修改的部分,保留其他狀態。
常見指令
# 啟動開發伺服器
npm run dev
# 建置正式版本
npm run build
# 預覽建置結果
npm run preview
Code language: PHP (php)翻譯:
dev– 開發用,有 HMR,會即時顯示修改build– 打包成靜態檔案,用於部署到伺服器preview– 在本地預覽打包後的結果
常見問題
問題 1:模板有哪些選擇?
# React + TypeScript(推薦)
npm create vite@latest my-app -- --template react-ts
# React + JavaScript
npm create vite@latest my-app -- --template react
# 互動式選擇(不指定模板)
npm create vite@latest my-app
Code language: PHP (php)不指定模板時會出現選單讓你選:
? Select a framework: >> - Use arrow-keys. Return to submit.
Vanilla
Vue
> React
Preact
Lit
Svelte
...
Code language: PHP (php)問題 2:為什麼是 5173 埠號?
這是 Vite 的預設埠號。如果被占用,Vite 會自動找下一個可用的(5174、5175…)。
想指定埠號可以修改 vite.config.ts:
export default defineConfig({
plugins: [react()],
server: {
port: 3000, // 改成你要的埠號
},
})
Code language: CSS (css)問題 3:vite-env.d.ts 是什麼?
/// <reference types="vite/client" />
Code language: HTML, XML (xml)一句話:告訴 TypeScript「Vite 提供了哪些特殊功能」,例如引入圖片、CSS 等。不用動它。
Vibe Coder 檢查點
看到 AI 幫你建立 Vite + React 專案時確認:
- [ ] 有用
--template react-ts嗎?(TypeScript 比較安全) - [ ]
npm install跑過了嗎? - [ ] 能成功執行
npm run dev嗎? - [ ] 修改程式碼後有自動更新嗎?(HMR 正常運作)
小結
這篇你學會了:
- 用
npm create vite@latest一行指令建立專案 - 專案目錄結構:
src/放程式碼,main.tsx是進入點,App.tsx是主元件 - HMR 熱更新:改程式碼馬上看到結果,狀態還不會消失
下一篇會介紹 Vite 的設定檔 vite.config.ts,讓你可以自訂更多行為。
進階測驗:用 Vite 建立 React 專案
測驗目標:驗證你是否能在實際情境中應用所學。
共 5 題,包含情境題與錯誤診斷題。
共 5 題,包含情境題與錯誤診斷題。
1. 你剛加入一個新專案,需要從零開始建立 React 開發環境 情境題
主管要求使用 TypeScript 來確保程式碼品質,而且要用 Vite 作為建構工具。你已經安裝好 Node.js 18,現在要建立名為
dashboard 的專案。
你應該執行哪個指令?
2. 團隊成員反映開發伺服器的埠號 5173 與其他服務衝突 情境題
你們的專案需要同時執行多個微服務,5173 埠號已經被另一個服務佔用。主管希望把 Vite 開發伺服器改到 3000 埠號。
你應該在哪個檔案進行設定?
3. 專案完成開發,準備部署到正式環境 情境題
你的 React 專案已經開發完成,QA 測試也通過了。現在需要把程式碼打包成靜態檔案,交給 DevOps 團隊部署到 AWS S3。
你應該依序執行哪些指令?
4. 新同事照著教學建立專案,但瀏覽器開啟後是空白頁 錯誤診斷
小明執行完
npm create vite@latest my-app -- --template react-ts 後,直接執行 cd my-app && npm run dev,開啟瀏覽器卻看到錯誤訊息。
$ npm run dev
> [email protected] dev
> vite
sh: vite: command not found
最可能的原因是什麼?
5. 同事修改了按鈕文字,但 HMR 沒有正常運作 錯誤診斷
小華修改了
App.tsx 中的按鈕文字,存檔後發現瀏覽器沒有自動更新。他說他之前點按鈕把 count 加到 5,現在重新整理後 count 又變回 0 了。
根據描述,最可能的情況是什麼?