選單
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Vue 教程

Vue 首頁 Vue Intro Vue Directives Vue v-bind Vue v-if Vue v-show Vue v-for Vue Events Vue v-on Vue Methods Vue Event Modifiers Vue Forms Vue v-model Vue CSS Binding Vue Computed Properties Vue Watchers Vue Templates

Scaling Up

Vue:為什麼、如何以及設定 Vue:第一個 SFC 頁面 Vue 元件 Vue Props Vue v-for 元件 Vue $emit() Vue 傳遞屬性 Vue 作用域樣式 Vue 本地元件 Vue 插槽 Vue v-slot Vue 作用域插槽 Vue 動態元件 Vue Teleport Vue HTTP 請求 Vue 模板引用 Vue 生命週期鉤子 Vue Provide/Inject Vue 路由 Vue 表單輸入 Vue 動畫 Vue v-for 動畫 Vue 構建 Vue Composition API

Vue Reference

Vue Built-in Attributes Vue Built-in Components Vue Built-in Elements Vue Component Instance Vue Directives Vue Instance Options Vue Lifecycle Hooks

Vue 示例

Vue Examples Vue Exercises Vue Quiz Vue Server Vue Certificate

Vue 元件

Vue 中的元件可以將我們的網頁分解成易於處理的小塊。

我們可以獨立於網頁的其餘部分來使用 Vue 元件,元件擁有自己的內容和邏輯。

一個網頁通常由許多 Vue 元件組成。

什麼是元件?

元件是可重用的、自包含的程式碼塊,它們封裝了使用者介面的特定部分,因此我們可以構建可擴充套件且易於維護的 Vue 應用程式。

我們可以自己建立 Vue 元件,也可以使用稍後會學到的內建元件,例如 <Teleport><KeepAlive>。在這裡,我們將專注於我們自己建立的元件。


建立元件

Vue 的元件是一個非常強大的工具,因為它能讓我們的網頁更具可擴充套件性,並且使大型專案更容易處理。

讓我們建立一個元件並將其新增到我們的專案中。

  1. src 資料夾內建立一個名為 components 的新資料夾。

  2. components 資料夾內,建立一個名為 FoodItem.vue 的新檔案。元件通常以 PascalCase 命名約定命名,不帶空格,其中每個新單詞都以大寫字母開頭,包括第一個單詞。

  3. 確保 FoodItem.vue 檔案如下所示:

FoodItem.vue 元件內的程式碼

<template>
  <div>
    <h2>{{ name }}</h2>
    <p>{{ message }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      name: 'Apples',
      message: 'I like apples'
    }
  }
};
</script>

<style></style>

如上例所示,元件也像我們的主 App.vue 檔案一樣,由 <template><script><style> 標籤組成。


新增元件

請注意,上面示例中的 <script> 標籤以 export default 開頭。這意味著包含資料屬性的物件可以在另一個檔案中接收或匯入。我們將使用此功能,透過在 main.js 檔案中匯入 FoodItem.vue 元件來將其整合到我們現有的專案中。

首先,在您的原始 main.js 檔案中將最後一行重寫為兩行:

main.js:

import { createApp } from 'vue'

import App from './App.vue'

const app = createApp(App)
app.mount('#app')

現在,透過在 main.js 檔案中插入第 4 行和第 7 行來新增 FoodItem.vue 元件:

main.js:

import { createApp } from 'vue'

import App from './App.vue'
import FoodItem from './components/FoodItem.vue'

const app = createApp(App)
app.component('food-item', FoodItem)
app.mount('#app')

在第 7 行,添加了該元件,以便我們可以在 App.vue 檔案的 <template> 標籤中使用它,作為自定義標籤 <food-item/>,如下所示:

App.vue:

<template>
  <h1>Food</h1>
  <food-item/>
  <food-item/>
  <food-item/>
</template>

<script></script>

<style></style>

另外,讓我們在 App.vue 檔案的 <style> 標籤中新增一些樣式。確保開發伺服器正在執行,並檢視結果。

示例

App.vue:

<template>
  <h1>Food</h1>
  <food-item/>
  <food-item/>
  <food-item/>
</template>

<script></script>

<style>
  #app > div {
    border: dashed black 1px;
    display: inline-block;
    margin: 10px;
    padding: 10px;
    background-color: lightgreen;
  }
</style>
執行示例 »

開發模式:在處理 Vue 專案時,透過在終端中執行以下命令,始終將專案置於開發模式非常有用:

npm run dev

單獨的元件

Vue 中處理元件時一個非常有用且強大的屬性是,我們可以讓它們獨立工作,而無需像使用純 JavaScript 那樣標記具有唯一 ID 的元素。Vue 會自動處理,將每個元件視為獨立的。

讓我們讓 <div> 元素在被點選時進行計數。

我們新增到主應用程式檔案 App.vue 的唯一內容是 CSS,以便在懸停時將游標顯示為指向的手形,暗示存在某種點選功能。

新增到 App.vue<style> 標籤的 CSS 程式碼:

#app > div:hover {
  cursor: pointer;
}

在我們的元件檔案 FoodItem.vue 中,我們必須新增一個名為 count 的資料屬性,為 <div> 元素新增一個點選監聽器,新增一個在點選時執行以增加計數器的函式,以及使用文字插值 {{}} 來顯示計數。

示例

FoodItem.vue:

<template>
  <div v-on:click="countClicks">
    <h2>{{ name }}</h2>  
    <p>{{ message }}</p>
    <p id="red">You have clicked me {{ clicks }} times.</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      name: 'Apples',
      message: 'I like apples',
      clicks: 0
    }
  },
  methods: {
    countClicks() {
      this.clicks++;
    }
  }
}
</script>

<style>
  #red {
    font-weight: bold ;
    color: rgb(144, 12, 12);
  }
</style>
執行示例 »

我們不必定義唯一的 ID 或執行任何額外工作,Vue 就會自動為每個 <div> 元素獨立處理計數,Vue 就會自動完成。

但是,除了不同的計數器值之外,<div> 元素的內容仍然相同。在下一頁中,我們將瞭解更多關於元件的知識,以便以更有意義的方式使用元件。例如,在每個 <div> 元素中顯示不同種類的食物會更有意義。


Vue 練習

透過練習來測試自己

練習

main.js 中下面的行將一個元件新增到我們的 Vue 專案中:

app.component('fish-type', FishType)

如何將此元件新增到 App.vue 中?

<template>
  <h1>Fish</h1>
  
</template>

開始練習



×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援