vue組件和模板

好的,我們來詳細解釋一下在 Vue(以及現代前端開發)中兩個最核心的概念:組件 (Component)模板 (Template)

理解了它們,就等于掌握了現代 Web 應用開發的基石。

一個核心比喻:樂高積木

在開始前,請記住這個簡單的比喻,它能貫穿我們整個的討論:

  • 組件 (Component):就像一塊塊功能各異的樂高積木(如一個 2x4 的基礎塊、一個車輪、一個窗戶)。
  • 模板 (Template):就像這塊積木的設計圖紙或模具,它規定了這塊積木長什么樣,由哪些更小的部分組成。

一、組件 (Component):可復用的 UI 積木

組件是現代前端框架的靈魂。它是一個獨立的、可復用的、自成一體的界面單元

一個組件將構成它自身所需要的一切都封裝在了一起:

  • 結構 (Structure):由它的模板 (HTML) 定義。
  • 行為 (Behavior):由它的腳本 (JavaScript) 定義。
  • 樣式 (Style):由它的樣式 (CSS) 定義。

在 Vue 中,這個概念被完美地體現在單文件組件 (Single-File Component, SFC),也就是 .vue 文件中:

<template><button class="my-button" @click="handleClick">{{ label }}</button>
</template><script setup>
// 這是組件的行為 (腳本)
import { defineProps, defineEmits } from 'vue';defineProps({label: String
});const emit = defineEmits(['button-clicked']);function handleClick() {emit('button-clicked', '按鈕被點擊了!');
}
</script><style scoped>
/* 這是組件的樣式 */
.my-button {background-color: blue;color: white;padding: 10px 15px;border-radius: 5px;
}
</style>
組件的核心特點:
  1. 封裝性 (Encapsulation):組件把自己的 HTML、JS、CSS 代碼“關”在自己的地盤里。比如上面例子中的 <style scoped>,能確保 .my-button 的樣式只對這個組件生效,不會污染到其他地方。

  2. 復用性 (Reusability):一旦你定義好了一個 <MyButton> 組件,你就可以在應用的任何地方,像使用普通 HTML 標簽一樣,無數次地復用它,而無需重復編寫相同的代碼。

    <MyButton label="確認" />
    <MyButton label="取消" />
    <MyButton label="提交" />
    
  3. 組合性 (Composability):這是最強大的地方。你可以用簡單的小組件,像搭積木一樣,拼裝成一個更復雜的大組件。比如,一個“用戶個人資料卡片”組件,可以由一個“頭像”組件、一個“用戶名”組件和多個“按鈕”組件組合而成。整個 Vue 應用本身,就是一個由無數組件層層嵌套組合而成的巨大組件樹。


二、模板 (Template):描繪組件藍圖的“HTML Pro Max”

模板是組件的一部分,它定義了這個組件的結構和布局

你可以把模板看作是“增強版的 HTML”。它以我們熟悉的 HTML 語法為基礎,但被 Vue 賦予了“魔法”,讓它能夠動態地響應數據變化。

模板的“魔法”體現在哪里?
  1. 數據綁定 (Data Binding):通過“小胡子”語法 {{...}},模板可以輕松地顯示來自組件腳本中的動態數據。

    <p>用戶名: {{ user.name }}</p>
    
  2. 指令 (Directives):模板使用 v- 開頭的特殊屬性(指令)來添加邏輯。我們之前深入討論過的 v-bind, v-on, v-if, v-for 等都屬于指令。它們為靜態的 HTML 賦予了生命力。

    <p v-if="user.isLoggedIn">歡迎回來!</p><ul><li v-for="item in items" :key="item.id">{{ item.name }}</li>
    </ul><img :src="user.avatarUrl"><button @click="logout">登出</button>
    
  3. 組件標簽 (Component Tags):模板也是我們使用和組合其他組件的地方。

    <template><div class="profile-card"><Avatar :src="user.avatarUrl" />  <Username :name="user.name" />      </div>
    </template>
    

組件和模板的關系:靈魂與骨架

如果說組件是一個完整的、有生命的“”,那么:

  • 模板 (<template>) 就是這個人的“骨架”,決定了他的基本形態和結構。
  • 腳本 (<script>) 就是這個人的“大腦和神經系統”,負責思考、響應和行動。
  • 樣式 (<style>) 就是這個人的“外貌和衣著”,決定了他的外觀。

這三者被封裝在一個統一的生命體(組件)中,協同工作。模板負責聲明“應該有什么”,腳本負責提供“數據和邏輯”,Vue 則負責將它們神奇地關聯起來,呈現在用戶面前。

理解并熟練運用組件化思想和模板語法,是構建任何規模的 Vue 應用的絕對基石。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/913204.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/913204.shtml
英文地址,請注明出處:http://en.pswp.cn/news/913204.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python學習打卡:DAY 18 推斷聚類后簇的類型

浙大疏錦行 聚類后的分析&#xff1a;推斷簇的類型 知識點回顧&#xff1a; 推斷簇含義的2個思路&#xff1a;先選特征和后選特征通過可視化圖形借助ai定義簇的含義科研邏輯閉環:通過精度判斷特征工程價值 作業&#xff1a;參考示例代碼對心臟病數據集采取類似操作&#xff0c;…

Ubuntu for ARM 更換為阿里云鏡像源

1. 簡介 該鏡像適用于配置 ARM, PowerPC 等其他架構的 ubuntu系統&#xff0c;不適用 x86 &#xff01;&#xff01;&#xff01; 各種版本的Ubuntu for ARM下載地址&#xff1a;https://cdimage.ubuntu.com/releases 2. 配置方法 打開 sources.list 文件。 vim /etc/apt/s…

HTML與JavaScript:構建動態交互式Web頁面的基石

HTML與JavaScript&#xff1a;構建動態交互式Web頁面的基石 在現代Web開發中&#xff0c;HTML和JavaScript是不可或缺的兩位主角。HTML負責頁面的結構和內容&#xff0c;而JavaScript則賦予頁面生命&#xff0c;使其能夠響應用戶交互、動態更新內容&#xff0c;并與后端服務進…

Python數據分析基礎03:探索性數據分析

相關文章&#xff1a; 《python數據分析基礎02&#xff1a;數據可視化分析》 《Python數據分析基礎01&#xff1a;描述性統計分析》 探索性數據分析&#xff08;Exploratory Data Analysis, EDA&#xff09; 的深度解析&#xff0c;涵蓋核心目標、方法論框架、關鍵技術及可視…

D3 面試題100道之(41-60)

這里是D3的面試題,我們從第 41~60題 開始逐條解答。一共100道,陸續發布中。 ?? 面試題(第 41~60 題) 41. D3 中如何添加圖例? 圖例可以通過手動創建 SVG 元素或使用 D3 的輔助函數來實現。常見做法是結合 d3.scaleOrdinal() 和 .range() 創建顏色映射圖例。 示例: c…

Spring Boot事件驅動模型深度解析

目錄 一、什么是Spring事件機制&#xff1f; 與傳統方法調用的對比&#xff1a; 二、四大核心組件解析 1. ApplicationEvent&#xff1a;事件對象 2. ApplicationEventPublisher&#xff1a;事件發布器 3. ApplicationListener&#xff1a;事件監聽接口 4. EventListener…

Python gmssl.SM4使用案例

Python gmssl.SM4使用案例 摘要:在異構計算系統驗證中,通常會有數據加解密的要求,例如用戶數據、權重參數等,本文將詳細介紹在UVM驗證環境中,調用Python的gmssl庫,用SM4實現加解密的驗證方案。 一、Python gmssl 庫介紹 gmssl 是一個開源的、純Python實現的國密算…

迅為高情性6TOPS算力的RK3576開發板NPU rknn-model-zoo例程演示

迅為iTOP-3576開發板采用瑞芯微RK3576高性能、低功耗的應用處理芯片&#xff0c;集成了4個Cortex-A72和4個Cortex-A53核心&#xff0c;以及獨立的NEON協處理器。它適用于ARM PC、邊緣計算、個人移動互聯網設備及其他多媒體產品。支持INT4/INT8/INT16/FP16/BF16/TF32混合運算&am…

rsync 命令詳解

目錄 rsync 傳輸備份工作原理詳解一、核心算法:差異傳輸二、傳輸流程三、關鍵技術四、與cp/scp復制的本質區別rsync的使用基本語法常用選項常用組合案例1. **本地目錄同步**2. **遠程同步(SSH協議)**3. **刪除目標端多余文件**4. **排除特定文件**5. **限速傳輸(避免占用帶…

【MySQL進階】錯誤日志,二進制日志,mysql系統庫

目錄 一.錯誤日志 1.1 配置錯誤日志 1.1.1 Windows的默認錯誤日志路徑 1.1.2 Unix和Linux系統的默認錯誤日志路徑 1.2 錯誤日志中事件的字段 1.2.1 核心錯誤事件字段 1.2.2.MySQL 錯誤消息的兩種不同輸出渠道 1.2.3 可選錯誤事件字段 1.3. 刷新錯誤日志文件和重命名 二…

day45-nginx復雜跳轉與https

1. ?nginx復雜跳轉 客戶端ip不是內網(172.16/192.168)ip時&#xff0c;維護文件存在時&#xff0c;返回503或者錯誤頁面 1.1. &#x1f4dd;修改配置文件 server {listen 80;server_name re.linux.cn; root /app/code/re/;set $flag 0;if ( $remote_addr !~* "^172…

基于pcl點云庫實現激光雷達數據采集

基于pcl點云庫實現倍加福R2000激光雷達數據采集 一、項目介紹二、開發詳情三、顯示效果展示四、說明 一、項目介紹 最近用pcl庫實現了倍加福R2000激光雷達的數據采集&#xff0c;并實時在viewer上實時更新顯示。軟件的開發是基于vs2019qt插件pcl庫實現&#xff0c;可以完成如下…

微信小程序61~70

1.組件wxml的slot-插槽 在使用基礎組件時&#xff0c;可以在組件中間寫子節點&#xff0c;從而將子節點內容展示到頁面中&#xff0c;自定義組件也可以接收子節點但是要在組件模板中定義節點&#xff0c;承載組件中間的子節點需要使用多個插槽時&#xff0c;要在組件.js中聲明…

03_性能優化:讓軟件呼吸更順暢

引言 在用戶對軟件響應速度近乎苛刻的今天&#xff0c;性能已成為產品競爭力的核心指標。據Google研究&#xff0c;頁面加載時間每增加1秒&#xff0c;轉化率就會下降20%。本文將從前端、后端、移動端三個維度&#xff0c;揭示性能優化的核心策略與實戰技巧&#xff0c;幫助你打…

LangChain4j 框架模仿豆包實現智能對話系統:架構與功能詳解

系統整體架構設計基于 LangChain4j 框架構建的智能對話系統采用 "前后端分離 大模型中樞" 的三層架構設計&#xff0c;實現了與豆包類似的智能交互體驗。系統架構圖如下所示&#xff1a;┌────────────────────────────────────…

基于uni-app的書法學習管理小程序的設計與實現

一、設計的目的 書法是中華民族傳統文化的瑰寶&#xff0c;更是人類文明的寶貴財富&#xff0c;具有深遠的意義和實價值。在當今數字化時代&#xff0c;隨著信息技術的飛速發展&#xff0c;傳統書法學習模式面臨著諸多挑戰和需要解決的問題。為推動書法學習的現代化轉型&#…

NumPy 函數庫在數學建模中的基本使用方法

一、引言 在數學建模的世界里,我們常常需要處理大量的數據和進行復雜的數值計算。Python 中的 NumPy 庫就像是一位得力的助手,它為我們提供了強大的多維數組對象和豐富的數學函數,讓我們能夠高效地完成各種數值計算任務。接下來,我們將深入探討 NumPy 在數學建模中的基本使…

模塊三:現代C++工程實踐(4篇)第一篇《C++模塊化開發:從Header-only到CMake模塊化》

引言&#xff1a;現代C工程化的核心挑戰&#xff08;終極擴展版&#xff09; 在云計算與物聯網時代&#xff0c;C項目規模呈指數級增長。傳統Header-only開發模式暴露出編譯效率低下、依賴管理混亂、版本沖突頻發等致命問題。本文通過CMake 3.22Conan 2.0工具鏈的深度集成&…

uniapp啟動圖被拉伸問題

記錄下&#xff1a; 安卓手機有不同的規格&#xff0c;很難所有規格都去適配。如果不適配所有機型&#xff0c;那么就會導致部分機型的啟動圖被拉伸。 安卓提供了.9.png圖片格式&#xff0c;允許標注部分拉伸&#xff0c;這樣啟動圖中間的logo就不會被拉伸。 下面2張圖是沒有…

stm32的三種開發方式

以下是針對STM32F103RC實現LED閃爍&#xff08;PC13引腳&#xff09;的三種開發方式示例代碼&#xff0c;每種方式均保持相同的核心邏輯&#xff1a; 1. 寄存器開發方式&#xff08;直接操作寄存器&#xff09; #include "stm32f10x.h"int main(void) {// 1. 開啟G…