Vue組件的基本結(jié)構(gòu)是什么?template和script如何配合工作?

vue組件的基本結(jié)構(gòu)由template、script和style三部分組成,其中template和script是核心。一、template作為組件的“骨架”,使用html模板和vue語法綁定數(shù)據(jù)與事件;二、script作為組件的“大腦”,定義數(shù)據(jù)、方法和生命周期鉤子;三、vue將template編譯為渲染函數(shù),自動響應(yīng)script中數(shù)據(jù)變化并更新dom;四、細(xì)節(jié)上需注意template只能有一個根元素,變量名需一致,vue 3可使用簡化語法。

Vue組件的基本結(jié)構(gòu)是什么?template和script如何配合工作?

Vue組件的基本結(jié)構(gòu)主要由三部分組成:template、script 和 style。這三部分分別負(fù)責(zé)組件的視圖結(jié)構(gòu)、邏輯行為和樣式表現(xiàn)。其中,template 和 script 是最核心的部分,它們一起決定了組件如何渲染和交互。

簡單來說,template 負(fù)責(zé)寫頁面長什么樣,而 script 負(fù)責(zé)告訴它這些內(nèi)容怎么動起來。


一、template 是組件的“骨架”

在 Vue 單文件組件中, 標(biāo)簽里寫的其實是 HTML 模板,只不過可以使用 Vue 的模板語法來綁定數(shù)據(jù)、響應(yīng)事件等。

立即學(xué)習(xí)前端免費學(xué)習(xí)筆記(深入)”;

比如你可以這樣寫:

<template>   <div>     <h1>{{ title }}</h1>     <button @click="onClick">點我</button>   </div> </template>

這段代碼中的 {{ title }} 和 @click 都不是原生 HTML 的寫法,而是 Vue 提供的指令和插值語法。它們能正常工作,是因為 script 中提供了對應(yīng)的數(shù)據(jù)和方法。


二、script 是組件的“大腦”

<script> 部分定義了組件的行為和數(shù)據(jù)來源。你可以在里面定義 data、methods、computed、生命周期鉤子等。</script>

例如:

<script> export default {   data() {     return {       title: 'Hello Vue'     }   },   methods: {     onClick() {       this.title = '你點了按鈕!'     }   } } </script>

這部分定義了 title 數(shù)據(jù)和 onClick 方法,然后 template 就可以使用這些變量和方法來展示動態(tài)內(nèi)容和響應(yīng)用戶操作。


三、template 和 script 是如何配合工作的?

Vue 在運行時會把 template 編譯成一個渲染函數(shù),這個函數(shù)會在執(zhí)行時訪問 script 中定義的數(shù)據(jù),并生成最終的 DOM。當(dāng)數(shù)據(jù)變化時,Vue 會自動重新運行渲染函數(shù),更新頁面。

舉個例子,當(dāng)你點擊按鈕觸發(fā) onClick 方法修改 title 后,Vue 會檢測到數(shù)據(jù)變化,然后自動更新頁面上顯示的標(biāo)題內(nèi)容。

這種機(jī)制讓開發(fā)者不需要手動操作 DOM,只需要關(guān)心數(shù)據(jù)狀態(tài),ui 就能自動同步。


四、一些容易忽略但重要的細(xì)節(jié)

  • template 只能有一個根元素,否則會報錯。比如不能直接寫多個
    并列,必須包裹在一個父元素里。

  • 如果你用的是 Vue 3 的 語法,就不需要顯式導(dǎo)出對象,可以直接聲明變量和方法,它們會自動暴露給 template 使用。
  • 模板里的變量名必須和 script 中定義的一致,否則會變成 undefined,導(dǎo)致頁面不顯示或報錯。

  • 基本上就這些。理解好 template 和 script 的分工和協(xié)作方式,就能更順暢地開發(fā) Vue 組件了。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊14 分享