Vue 3 最基礎核心知識詳解

?

? Vue3作為現代前端主流框架,是前后端開發者都應當掌握的核心技能。本篇文章將帶你了解vue3的基礎核心知識,適合學習與復習

一、Vue 3 應用創建

1.1 創建Vue應用的基本步驟

// main.js
import { createApp } from 'vue'  // 1. 導入createApp函數
import App from './App.vue'     // 2. 導入根組件const app = createApp(App)      // 3. 創建應用實例
app.mount('#app')               // 4. 掛載到DOM元素

詳細說明:

  • createApp?是Vue 3新引入的函數,替代了Vue 2的new Vue()

  • 每個Vue應用都是通過createApp函數創建的

  • mount()方法將Vue應用掛載到指定的DOM元素上(通常是index.html中的<div id="app"></div>

二、模板語法詳解

2.1 文本插值

<template><p>{{ message }}</p>  <!-- 雙大括號語法 -->
</template><script setup>
const message = 'Hello Vue 3!'
</script>

要點:

  • 雙大括號{{ }}稱為"Mustache"語法

  • 內部可以寫簡單的JavaScript表達式

  • 不支持語句或復雜邏輯(應該使用計算屬性)

2.2 常用指令

v-if / v-else / v-else-if

<div v-if="score >= 90">優秀</div>
<div v-else-if="score >= 60">及格</div>
<div v-else>不及格</div>

注意事項:

  • 條件渲染會真正創建/銷毀元素

  • 頻繁切換時考慮使用v-show

v-for

<ul><li v-for="(item, index) in items" :key="item.id">{{ index }} - {{ item.name }}</li>
</ul>

最佳實踐:

  • 必須為每個項提供唯一的:key

  • 可以使用對象解構:v-for="{ id, name } in users"

v-bind (縮寫:)

<img :src="imageUrl" :alt="imageAlt">
<div :class="{ active: isActive, 'text-danger': hasError }"></div>

v-on (縮寫@)注冊事件

<button @click="handleClick">點擊</button>
<input @keyup.enter="submit">

v-model

<input v-model="message" placeholder="輸入內容">
<select v-model="selected"><option value="A">選項A</option>
</select>

原理:?相當于以下語法糖

<input :value="text" @input="text = $event.target.value"
>

三、響應式系統核心

3.1 ref 和 reactive

一:ref 是什么?

在 Vue 3 或者其他采用響應式設計的框架里,ref?是用于創建響應式數據的函數。它會把傳入的參數封裝成一個對象,這個對象具備?.value?屬性,借助這個屬性就能訪問或修改原始值。

<script setup>
import { ref, reactive } from 'vue'// 基本類型使用ref
const count = ref(0)
console.log(count.value) // 訪問值// 對象類型使用reactive
const user = reactive({name: 'Alice',age: 25
})
console.log(user.name) // 直接訪問
</script>

區別對比:

特性refreactive
適用類型基本類型對象類型
訪問方式需要.value直接訪問
模板中使用自動解包直接使用
重新賦值支持不推薦

3.2 響應式原理

Vue 3使用Proxy實現響應式:

  • 當數據變化時,自動更新DOM

  • 跟蹤依賴關系,精確更新

  • 性能優于Vue 2的Object.defineProperty

四、計算屬性和監聽器

4.1 計算屬性 (computed)

核心步驟:1導入computed函數

? ? ? ? ? ? ? ? ? 2執行函數在回調參數中return基于響應式數據做計算的值,用變量接收

<script setup>
import { ref, computed } from 'vue'const price = ref(10)
const quantity = ref(2)// 自動計算總價(有緩存)
const total = computed(() => {return price.value * quantity.value//這里面放計算屬性的計算邏輯
})
</script>

特點:

  • 基于它們的響應式依賴進行緩存

  • 依賴不變時不會重新計算

  • 適合復雜邏輯計算

最佳實踐:1計算屬性中不應該有副作用,比如異步請求修改dom

? ? ? ? ? ? ? ? ? 2避免直接修改計算屬性的值

4.2 監聽器 (watch)

作用:偵聽一個或者多個數據的變化,數據變化時執行回調函數

回調函數:作為參數傳遞給其他函數的一種函數,其目的是在某個特定事件發生或者完成特定操作之后再執行。

一:監聽一個數據的變化

import { ref, watch } from 'vue'const count = ref(0)// 當count變化時執行
watch(count, (新值, 舊值) => {console.log(`計數器從${舊值}變成了${新值}`)
})

二:監聽多個數據的變化?

const count = ref(0)
const name = ref('張三')// 同時監聽count和name
watch([count, name], ([新count, 新name], [舊count, 舊name]) => {console.log(`count變化: ${舊count}→${新count}`)console.log(`name變化: ${舊name}→${新name}`)
})

三:immediate立即執行

const user = ref(null)// 頁面加載時立即執行一次
watch(user, (新值) => {if(新值) {console.log('用戶數據:', 新值)}
}, {immediate: true  // 關鍵配置
})

使用場景:頁面初始化時需要立即獲取數據?

四:?深度監聽(deep)

const formData = ref({name: '',address: {city: '',district: ''}
})// 監聽對象內部變化
watch(formData, (新值) => {console.log('表單變化:', 新值)
}, {deep: true  // 監聽對象內部屬性變化
})

默認watch進行的是淺層監視,監視簡單數據類型的數據,使用deep:true后則可以監視復雜數據類型的變化

使用場景:監聽復雜對象或嵌套數據

?五:?精確控制監聽

watch(() => user.value.age,  // 只監聽user對象的age屬性(新年齡) => {console.log('年齡變化:', 新年齡)}
)

五、組件基礎

5.1 組件定義

<!-- ChildComponent.vue -->
<template><div class="child"><h3>{{ title }}</h3><button @click="emitEvent">觸發事件</button></div>
</template><script setup>
// 定義props
defineProps({title: {type: String,default: '默認標題'}
})// 定義emits
const emit = defineEmits(['custom-event'])const emitEvent = () => {emit('custom-event', '額外數據')
}
</script>

5.2 組件使用

<template><ChildComponent title="子組件標題"@custom-event="handleEvent"/>
</template><script setup>
import ChildComponent from './ChildComponent.vue'const handleEvent = (data) => {console.log('收到子組件事件:', data)
}
</script>

六、生命周期鉤子

Vue 3主要生命周期:

import { onMounted, onUpdated, onUnmounted } from 'vue'onMounted(() => {console.log('組件掛載完成')// 適合做DOM操作、API請求等
})onUpdated(() => {console.log('組件更新完成')
})onUnmounted(() => {console.log('組件卸載')// 適合做清理工作
})

完整生命周期流程:

  1. setup() → 2. onBeforeMount → 3. onMounted → 4. onBeforeUpdate → 5. onUpdated → 6. onBeforeUnmount → 7. onUnmounted


記住:Vue 3的學習是一個循序漸進的過程,建議邊學邊實踐,通過小項目鞏固知識。

組件定意的詳細內容見Vue 3 核心概念詳解:生命周期、組件通信與模板引用

?

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

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

相關文章

Bootstrap 5學習教程,從入門到精通,Bootstrap 5 Flex 布局語法知識點及案例(27)

Bootstrap 5 Flex 布局語法知識點及案例 Bootstrap 5 提供了強大的 Flexbox 工具集&#xff0c;讓布局變得更加簡單靈活。以下是 Bootstrap 5 Flex 布局的完整知識點和詳細案例代碼。 一、Flex 布局基礎語法 1. 啟用 Flex 布局 <div class"d-flex">我是一個…

HarmonyOS 5智能單詞應用開發:記憶卡(附:源碼

一、應用概述與核心價值 在語言學習過程中&#xff0c;單詞記憶是基礎也是難點。本文介紹的智能單詞記憶卡應用通過創新的交互設計和科學的學習模式&#xff0c;幫助用戶高效記憶單詞。應用采用ArkUI框架開發&#xff0c;主要特點包括&#xff1a; 雙模式學習系統&#xff1a…

LeetCode--38.外觀數列

前言&#xff1a;之前我不是說&#xff0c;我后續可能會講一下遞歸嗎&#xff0c;現在它來了&#xff0c;這道題會用到回溯的方法&#xff0c;并且比較純粹哦 解題思路&#xff1a; 1.獲取信息&#xff1a;&#xff08;下面這些信息差不多是力扣上面的題目信息了&#xff0c;所…

服務器的安裝與安全設置

1&#xff1a;安裝操作系統 1、創建虛擬機Win49&#xff08;49為序號&#xff09;&#xff0c;并安裝Windows Server 2019操作系統 參考配置&#xff1a;安裝系統的分區大小為20GB&#xff0c;其余分區暫不劃分&#xff0c; 文件系統格式為NTFS&#…

Sensodrive SensoJoint機器人力控關節模組抗振動+Sensodrive力反饋系統精準對接

Sensodrive成立于2003年&#xff0c;起源于德國航空航天中心&#xff08;DLR&#xff09;的LBR項目。公司由一批傳感器技術專家創立&#xff0c;專注于高精度工業扭矩傳感器的研發。憑借二十余年的技術積累&#xff0c;Sensodrive將DLR輕型機器人扭矩技術引入工業領域&#xff…

【AI實踐】Mac一天熟悉AI模型智能體應用(百煉版)

25.6.29增加Gummy 實時/一句話語音識別25.6.28增加Qwen TTS本地音頻和實時播報 背景 準備環境 MacOS M1電腦&#xff08;其他M系列芯片也可以&#xff09; 為了方便python的使用環境&#xff0c;使用Miniconda&#xff1a;下載鏈接&#xff1a;Download Anaconda Distribution…

WEB安全--Java安全--jsp webshell免殺1

1.1、BCEL ClassLoader 介紹&#xff08;僅適用于BCEL 6.0以下&#xff09;&#xff1a; BCEL&#xff08;Apache Commons BCEL?&#xff09;是一個用于分析、創建和操縱Java類文件的工具庫&#xff1b;BCEL的類加載器在解析類名時會對ClassName中有$$BCEL$$標識的類做特殊處…

Valkey與Redis評估對比:開源替代方案的技術演進

#作者&#xff1a;朱雷 文章目錄 1 概述1.1內存數據結構存儲核心特性1.2主流內存數據結構存儲設計與適用場景1.3目前主流內存數據結構存儲對比 2 Valkey 說明2.1 哨兵架構設計2.2 集群架構設計2.3 valkey 使用企業和業內生態? 3 評估指標4 評估結果 1 概述 內存數據結構存儲…

華為云Flexus+DeepSeek征文 | 基于華為云ModelArts Studio安裝NoteGen AI筆記應用程序

華為云FlexusDeepSeek征文 | 基于華為云ModelArts Studio安裝NoteGen AI筆記應用程序 引言一、ModelArts Studio平臺介紹華為云ModelArts Studio簡介ModelArts Studio主要特點 二、NoteGen介紹NoteGen簡介主要特點 三、安裝NoteGen工具下載NoteGen軟件安裝NoteGen工具 四、開通…

BUUCTF在線評測-練習場-WebCTF習題[BJDCTF2020]Easy MD51-flag獲取、解析

解題思路 打開靶場&#xff0c;有個提交框&#xff0c;輸入后url會出現我們提交的參數password http://a48577ed-9a1c-4751-aba0-ae99f1eb8143.node5.buuoj.cn:81/leveldo4.php?password123 查看源碼并沒用發現什么貓膩&#xff0c;抓包在響應頭發現了貓膩 hint: select * …

面向對象三大特性深度解析:封裝、繼承與多態

面向對象三大特性深度解析&#xff1a;封裝、繼承與多態 思維導圖概覽 #mermaid-svg-v2u0XIzKotjyXYei {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-v2u0XIzKotjyXYei .error-icon{fill:#552222;}#mermaid-svg-v2…

mmap映射物理內存之三invalid cache

目錄 流程設計 invalid 命令 內核態invalid 內核態invalid&#xff0c;用戶態mmap物理地址 PAN機制 PAN機制歷程 硬件支持 ARMv8.1-PAN 特性 Linux 內核的適配 軟件模擬 PAN&#xff08;SW PAN&#xff09; 背景 Linux 的實現 總結 前述刷新cache的流程也同樣可…

記憶化搜索(dfs+memo)無環有向圖

這是一道可以當作板子的極簡記憶化搜索 建立a 是鄰接表&#xff0c;其中 a[x] 存儲從節點 x 出發能到達的所有節點。 b[x] 記錄從節點 x 出發的所有邊的權重之和。根據數學原理&#xff0c;我們很容易發現&#xff0c;一個根&#xff08;起點&#xff09;的期望&#xff0c;等…

使用AI豆包寫一個車輛信息管理頁面

記錄一個基本的車輛信息管理頁面&#xff0c;由豆包撰寫完成&#xff0c;只需要微調頁面即可。 主要功能是車輛信息的查詢、新增、編輯&#xff0c;項目用到了uniapp、vue3、ts、uni-ui、z-paging 頁面效果如下&#xff1a; 以上界面均由豆包生成&#xff0c;完成度非常高&am…

《HarmonyOSNext應用防崩指南:30秒定位JS Crash的破案手冊》

《HarmonyOSNext應用防崩指南&#xff1a;30秒定位JS Crash的破案手冊》 ##Harmony OS Next ##Ark Ts ##教育 本文適用于教育科普行業進行學習&#xff0c;有錯誤之處請指出我會修改。 &#x1f4a5; 哇哦&#xff01;JS Crash崩潰日志完全解析手冊 當你的應用突然閃退時&am…

閱讀筆記(3) 單層網絡:回歸(下)

閱讀筆記(3) 單層網絡:回歸(下) 該筆記是DataWhale組隊學習計劃&#xff08;共度AI新圣經&#xff1a;深度學習基礎與概念&#xff09;的Task03 以下內容為個人理解&#xff0c;可能存在不準確或疏漏之處&#xff0c;請以教材為主。 1. 為什么書上要提到決策理論&#xff1f; …

Mac OS系統每次開機啟動后,提示:輸入密碼來解鎖磁盤“Data”,去除提示的解決方法

問題描述&#xff1a; Mac mini外接了一個磁盤&#xff08;EX_Mac&#xff09;為默認使用的系統盤&#xff0c;內置的硬盤&#xff08;Macintosh HD&#xff09;為Mac mini自帶的系統盤 外置硬盤系統每次開機都會掛載內置磁盤&#xff0c;同時會提示需要輸入密碼來解鎖磁盤“…

CSS Flex 布局中flex-shrink: 0使用

flex-shrink: 0 是 CSS Flexbox 布局中的一個關鍵屬性&#xff0c;用于禁止彈性項目&#xff08;flex item&#xff09;在容器空間不足時被壓縮。以下是詳細解釋和示例&#xff1a; 核心作用 當容器的可用空間小于所有彈性項目的總寬度&#xff08;或高度&#xff09;時&#…

WHERE 子句中使用子查詢:深度解析與最佳實踐

&#x1f50d; WHERE 子句中使用子查詢&#xff1a;深度解析與最佳實踐 在 WHERE 子句中使用子查詢是 SQL 的高階技巧&#xff0c;可實現動態條件過濾。以下是全面指南&#xff0c;涵蓋語法、類型、陷阱及優化策略&#xff1a; &#x1f4dc; 一、基礎語法結構 SELECT 列 FR…

從0到1:不文明現象隨手拍小程序開發日記(一)

前期調研 不文明現象隨手拍小程序&#xff1a;在城市的快速發展進程中&#xff0c;不文明現象時有發生&#xff0c;為了有效解決這一問題&#xff0c;提升城市文明程度&#xff0c; 市民若發現不文明行為&#xff0c;如亂扔垃圾、隨地吐痰、破壞公共設施、違規停車等&#xff…