Skip to content

Vue.js 是什麼?現代前端開發必學的漸進式 JavaScript 框架

Vue.js:宣告式渲染、元件化與響應式系統

簡單來說,Vue(Vue.js)是一個用來建立使用者介面的 JavaScript 框架。如果您把網頁比喻成一棟建築,HTML 是結構,CSS 是裝潢,而 JavaScript 則是讓電梯能動、燈火能開關的電力系統。Vue 的存在,就是為了讓您用更聰明、更有效率的方式來管理這些電力系統。

這篇適合誰讀?

已經有 HTML、CSS 與 JavaScript 基礎,正準備踏入前端框架的人。讀完後您會知道 Vue 解決什麼問題、三大核心特點是什麼,以及該從哪裡開始寫第一行 Vue。

Vue 解決了什麼問題?

在沒有框架的年代,畫面與資料是分開的兩件事:資料改了,得自己記得去改畫面。專案一大,哪裡的資料變動要連動更新哪幾塊畫面 就變成災難。

js
// 原生 JavaScript:資料變了,還要自己動手更新畫面
let count = 0;

document.querySelector('#add').addEventListener('click', () => {
  count += 1;
  document.querySelector('#count').textContent = count; // 忘了這行,畫面就不會動
});

Vue 把這件事反過來:您只描述畫面長什麼樣子,剩下的交給框架

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 的繁瑣過程。

template
<p>{{ message }}</p>
<p :title="message">屬性也能綁定</p>

元件化 (Component-Based)

Vue 允許您將網頁拆解成一個個獨立、可重複利用的小零件,例如:導覽列、搜尋按鈕、卡片元件。此開發方式讓程式碼結構清晰、易於維護,且同一個按鈕零件可以在不同頁面重複使用,大幅提升開發效率。

一個元件就是一個 .vue 檔(單一檔案元件,SFC),畫面、邏輯與樣式寫在同一個檔案裡:

vue
<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 - OfficialVS Code 擴充套件,提供語法提示與檢查

彈性的漸進式框架特性

您可以只在現有專案的一個小地方使用 Vue,也可以用它開發複雜的 單頁應用程式 (SPA)

Vue 與其他框架的比較

項目VueReactAngular
畫面寫法貼近 HTML 的模板語法JSX(寫在 JavaScript 中)模板語法 + TypeScript
學習曲線平緩中等陡峭
官方生態官方維護路由與狀態管理多由社群方案組合內建完整功能
適合情境中小型專案、漸進式導入生態龐大、跨平台需求大型企業級應用

沒有標準答案

三個框架都能做出同樣的產品,差別在寫法風格與團隊習慣。以 先學會一套、把觀念學透 為目標,之後轉換框架會比想像中快得多。

兩種寫法:選項式 API 與組合式 API

Vue 3 同時支援兩種撰寫風格,功能相同,差別在於邏輯的組織方式。

vue
<!-- 選項式 API:依 data、methods、computed 分類 -->
<script>
export default {
  data() {
    return { count: 0 };
  },
  methods: {
    add() {
      this.count += 1;
    },
  },
};
</script>
vue
<!-- 組合式 API:同一個功能的邏輯寫在一起 -->
<script setup>
import { ref } from "vue";

const count = ref(0);
const add = () => (count.value += 1);
</script>

初學建議先用選項式建立觀念,理解響應式與生命週期後再轉往組合式;組合式 API 能把邏輯抽成 組合函式 重複使用,是大型專案的主流寫法。

如何開始寫第一個 Vue?

bash
npm create vue@latest
html
<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,避免大範圍重繪造成的效能損耗。

延伸閱讀