Vue.js 是什麼?現代前端開發必學的漸進式 JavaScript 框架
簡單來說,Vue(Vue.js)是一個用來建立使用者介面的 JavaScript 框架。如果您把網頁比喻成一棟建築,HTML 是結構,CSS 是裝潢,而 JavaScript 則是讓電梯能動、燈火能開關的電力系統。Vue 的存在,就是為了讓您用更聰明、更有效率的方式來管理這些電力系統。
這篇適合誰讀?
已經有 HTML、CSS 與 JavaScript 基礎,正準備踏入前端框架的人。讀完後您會知道 Vue 解決什麼問題、三大核心特點是什麼,以及該從哪裡開始寫第一行 Vue。
Vue 解決了什麼問題?
在沒有框架的年代,畫面與資料是分開的兩件事:資料改了,得自己記得去改畫面。專案一大,哪裡的資料變動要連動更新哪幾塊畫面 就變成災難。
// 原生 JavaScript:資料變了,還要自己動手更新畫面
let count = 0;
document.querySelector('#add').addEventListener('click', () => {
count += 1;
document.querySelector('#count').textContent = count; // 忘了這行,畫面就不會動
});Vue 把這件事反過來:您只描述畫面長什麼樣子,剩下的交給框架。
<script setup>
import { ref } from "vue";
const count = ref(0);
</script>
<template>
<p>{{ count }}</p>
<button @click="count++">加一</button>
</template>資料與畫面被綁在一起,count 一改,畫面自己就更新了。
Vue 的三大核心特點
宣告式渲染 (Declarative Rendering)
在傳統的 JavaScript(Vanilla JS)中,如果您想更改網頁上的一個數字,您必須下達冗長的指令:找到 ID 為 count 的標籤,取得其內容並改為 10。
而在 Vue 中,開發者只需宣告一個變數,Vue 會自動監控其狀態。當資料發生變動,網頁內容會 自動更新,省去了手動操作 DOM 的繁瑣過程。
<p>{{ message }}</p>
<p :title="message">屬性也能綁定</p>元件化 (Component-Based)
Vue 允許您將網頁拆解成一個個獨立、可重複利用的小零件,例如:導覽列、搜尋按鈕、卡片元件。此開發方式讓程式碼結構清晰、易於維護,且同一個按鈕零件可以在不同頁面重複使用,大幅提升開發效率。
一個元件就是一個 .vue 檔(單一檔案元件,SFC),畫面、邏輯與樣式寫在同一個檔案裡:
<script setup>
defineProps({ title: String });
</script>
<template>
<h2 class="card-title">{{ title }}</h2>
</template>
<style scoped>
.card-title {
font-size: 1.25rem;
}
</style>響應式系統 (Reactivity)
這是 Vue 的靈魂。當您的 JavaScript 狀態(State)發生變化時,Vue 的響應式引擎會精準地計算出受影響的 HTML 部分並進行局部更新,而不需要重新整理整個頁面。
Vue 3 以 Proxy 追蹤資料的讀取與寫入,因此能知道 哪個畫面用了哪筆資料,只更新真正受影響的那一小塊。
為什麼全球開發者都愛用 Vue?
學習曲線平緩,新手友善
相較於 React 或 Angular,Vue 的語法設計更直覺,保留了 HTML、CSS 和 JavaScript 相互獨立的特性,讓初學者能以最快的速度上手。
優異的效能與輕量體積
Vue 非常輕量化,結合了高效的虛擬 DOM (Virtual DOM) 機制,確保網頁在高頻數據互動下依然能保持極速的渲染效能。
完整的官方生態系
官方提供了 路由管理 (Vue Router) 和 狀態管理 (Pinia),您不需要花太多時間在挑選插件上。
| 工具 | 用途 |
|---|---|
| Vue Router | 管理頁面切換與網址對應,SPA 的路由核心 |
| Pinia | 跨元件共用資料的狀態管理 |
| Vite | 官方推薦的開發與建置工具,啟動極快 |
| Vue DevTools | 瀏覽器擴充套件,檢視元件樹與響應式狀態 |
| Vue - Official | VS Code 擴充套件,提供語法提示與檢查 |
彈性的漸進式框架特性
您可以只在現有專案的一個小地方使用 Vue,也可以用它開發複雜的 單頁應用程式 (SPA)。
Vue 與其他框架的比較
| 項目 | Vue | React | Angular |
|---|---|---|---|
| 畫面寫法 | 貼近 HTML 的模板語法 | JSX(寫在 JavaScript 中) | 模板語法 + TypeScript |
| 學習曲線 | 平緩 | 中等 | 陡峭 |
| 官方生態 | 官方維護路由與狀態管理 | 多由社群方案組合 | 內建完整功能 |
| 適合情境 | 中小型專案、漸進式導入 | 生態龐大、跨平台需求 | 大型企業級應用 |
沒有標準答案
三個框架都能做出同樣的產品,差別在寫法風格與團隊習慣。以 先學會一套、把觀念學透 為目標,之後轉換框架會比想像中快得多。
兩種寫法:選項式 API 與組合式 API
Vue 3 同時支援兩種撰寫風格,功能相同,差別在於邏輯的組織方式。
<!-- 選項式 API:依 data、methods、computed 分類 -->
<script>
export default {
data() {
return { count: 0 };
},
methods: {
add() {
this.count += 1;
},
},
};
</script><!-- 組合式 API:同一個功能的邏輯寫在一起 -->
<script setup>
import { ref } from "vue";
const count = ref(0);
const add = () => (count.value += 1);
</script>初學建議先用選項式建立觀念,理解響應式與生命週期後再轉往組合式;組合式 API 能把邏輯抽成 組合函式 重複使用,是大型專案的主流寫法。
如何開始寫第一個 Vue?
npm create vue@latest<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>前者用 Vite 建立完整專案,適合正式開發;後者不需任何建置工具,適合在既有網頁上先試玩幾個範例。實際步驟可參考 快速上手。
如果這個專案需要被搜尋引擎收錄
純用戶端渲染的 Vue 應用程式,伺服器回傳給爬蟲的只有一個空的 <div id="app">。少數幾頁需要收錄的話加個預渲染就夠,不必整站改寫成 Nuxt。三條解法的成本比較見 Vue 專案的 SEO 怎麼做。
常見問題
Vue 和 React、Angular 該選哪一個?
若您是初學者、專案規模中小型,或想在既有網站上漸進導入,Vue 通常是最省力的選擇;若團隊已有 React 生態或需要 React Native,選 React;大型企業級、規範嚴謹的專案則常見 Angular。
學 Vue 之前需要先學會什麼?
HTML、CSS 與 JavaScript 基礎,尤其是變數、函式、陣列與物件操作,以及 ES6 的箭頭函式與解構語法。Vue 的模板語法建立在 HTML 之上,基礎越紮實學得越順。
現在該學 Vue 2 還是 Vue 3?
直接學 Vue 3。Vue 2 已於 2023 年底停止官方維護,新專案、官方文件與周邊套件都以 Vue 3 為主。
一定要用 Node.js 和建置工具嗎?
不一定。用 CDN 引入就能在單一 HTML 檔裡使用 Vue,適合練習與小型頁面。但若要用 .vue 單一檔案元件、路由與模組化開發,就需要 Node.js 與 Vite。
Vue 可以只用在網頁的一小塊嗎?
可以,這正是 漸進式 的意思。您可以在既有網站中只讓 Vue 接管某個區塊,例如:一張表單或一個列表,其餘部分維持原本的寫法。
虛擬 DOM 是什麼?
虛擬 DOM 是用 JavaScript 物件描述的畫面結構。資料變動時,Vue 先在記憶體中比對新舊結構的差異,再把最小的變更套用到真實 DOM,避免大範圍重繪造成的效能損耗。