為什麼要有 Template?

因 Vue 讀書會的關係,重新來探索 Component 中的 Template 是什麼?抑或者 Template 幫我們解決了什麼問題?

現代前端的複雜應用想像一下,如果沒有像 Vue Template 這樣的工具,我們要怎麼更新網頁上的文字或圖片呢?在傳統的前端開發中,我們可能需要這樣做:

用 JavaScript 找到那個網頁元素 (例如:document.getElementById('myText'))。

然後手動去改變它的內容 (例如:element.innerHTML = '新的文字')。

如果網頁很複雜,有很多地方需要根據資料變化,這樣手動操作會變得非常痛苦,而且很容易出錯。每當資料更新,開發者就必須編寫指令來精確地告訴瀏覽器如何更新每一個相關的 DOM 元素。這種命令式的編程方式不僅繁瑣,而且隨著應用規模的擴大,程式碼的可維護性會急劇下降。

Vue Template & React JSX 在做什麼?為了上述問題,現代前端框架如 Vue 和 React 引入了更先進的 UI 構建方式。Vue Template (以及 React 中的 JSX) 的核心目標,就是讓我們可以用一種更「聲明式」的方式來開發:

專注於「結果」,而非「過程」:你只需要告訴框架「我希望這個地方顯示這個資料,長這個樣子」,而不用去管框架內部是如何找到元素、如何更新的。框架會自動幫你搞定這些繁瑣的 DOM 操作。

資料驅動畫面:當你的資料改變時,畫面會自動跟著更新。透過框架強大的「響應式系統」實現的。不需要再手動去更新畫面,省時又省力!程式碼更簡潔易懂:Vue Template 基於 HTML,這意味著所有 Vue 模板本身都是合法的 HTML。你可以像寫普通 HTML 一樣去寫 Vue 模板,瀏覽器也能正確解析它。這讓它非常容易上手,看起來就像是增強版的 HTML,非常直觀。組件化開發:現代框架都鼓勵我們把網頁拆分成一個個可重複使用的「組件」。模板語法在組件中扮演著定義結構和內容的角色,讓組件化開發更加得心應手。高效能:框架在背後做了很多優化,例如「虛擬 DOM」和「編譯時優化」,確保即便在複雜的應用中,畫面更新也能保持高效更新。AST 抽象語法樹你可能會好奇,我們寫的那些看起來像 HTML 的 Vue 模板,Vue 到底是怎麼把它變成真實的網頁畫面的呢?第一步,就是將模板解析成「抽象語法樹」(Abstract Syntax Tree, AST)。

AST 是什麼:

首先,Vue 的編譯器會把你寫的模板字串 (就是你在