這一系列文章的核心議題是 「Vue3.6 的革新」 再去深入理解 Composition API,在 Day1,我將從 Vue 的歷史演進切入,帶讀者理解為什麼 Vue 需要不斷更新,以及 Vue 3.6 的全新特性(Vapor Mode / Alien Signals)對開發者的意義。
下圖是依據 Vue.js 官網整理出來的發展時間軸,透過時間軸能夠更直觀感受到 Vue 是如何回應時代需求:從「易學」到「高效能」,從「Options API」到「Composition API」,最後走向「無 VDOM + Signals」的新時代。
2016 年 9 月
發布 Vue 2.0 (代號 Ghost in the Shell),帶來重大升級:
Virtual DOM(虛擬 DOM),大幅提升渲染效能。
虛擬 DOM 是什麼?(Virtual DOM)
https://www.thisweb.dev/post/what-is-virtual-dom
伺服器端渲染 (SSR) 支援。
更完善的組件系統。
生態系逐步形成(Vue Router、Vuex)。
2016–2021
Vue 2 成為主流框架之一,與 React、Angular 並列三大框架。
2022 年 2 月 7 日
Vue 3 成為 官方預設版本,但 Vue 2 仍有 LTS 支援。
2023 年 12 月 31 日
Vue 2 正式進入 EOL(終止維護),僅剩社群提供有限支持。
Vue 3 的研發從 2018 年開始,2020 年 9 月 18 日正式發布 Vue 3.0 (One Piece);核心理念是效能、TypeScript 友好、組件邏輯更清晰。
以下是 Vue 3 的主要里程碑:
<script setup>
語法,讓開發體驗更簡潔。defineOptions
、defineSlots
等語法糖。defineModel
穩定化,支援更直覺的雙向綁定。defineModel
、事件型別推導、自訂指令生命周期等。
defineModel()
、多參數 v-model
支援、defineOptions()
宏、增強的事件類型推導、自訂指令生命周期等實用開發功能。走過演化進入 Vue 3.6 新時代前,我們先一起看看 Vapor Mode 與傳統 VDOM 有什麼不同呢?為什麼尤大 (Evan You) 要做這樣的改變呢?
資料更新 → 建立 VNode → Diff 演算法比對 → Patch → 真實 DOM 更新
資料更新 → 直接操作真實 DOM(跳過 VNode 建立與 Diff)
<script setup vapor>
import { ref } from 'vue'
const count = ref(0)
</script>
<template>
<button @click="count++">Count: {{ count }}</button>
</template>
編譯後,將生成貼近「手寫 DOM 操作」的程式碼,而非傳統 VNode。
特性 | VDOM | Vapor Mode |
---|---|---|
Virtual DOM 支援 | O | X |
渲染機制 | VNode + diff + patch | 直接 DOM 操作 |
效能 / Bundle | 中等 / 偏大 | 高效 / 明顯縮小 |
API 支援 | Options / Composition | 只支援 Composition + <script setup> |
兼容性 | 成熟 | 部分功能待適配 |
使用方式 | 全域套用 | Opt-in(漸進啟用) |
Vue 3.6 更新内容總結
https://www.nsmao.com/announcement/67
Vue 3.6 and Vapor Mode: This is Another Level
https://jose-gutierrez.com/en/articles/vue-36-and-vapor-mode-this-is-another-level