目錄
一、Vue2.x:快速上手+插值表達式+指令上
1.1 Vue快速上手
1.1.1 Vue概念
1.1.2 創建實例
1.1.4 響應式特性
1.1.5 開發者工具
1.2 Vue指令
1.2.1 v-html
1.2.3 v-show / v-if
v-show
v-if
1.2.4 v-else / v-else-if
1.2.5 v-on
v-on 調用傳參
1.2.6 v-bind
圖片切換案例 - 波仔學習之旅
1.2.7 v-for
圖書管理案例-小黑的書架
v-for 中的 key
v-for 中的 key - 不加 key
v-for 中的 key
1.2.8 v-model
1.3 綜合案例-小黑記事本
二、Vue2.x:指令下+計算屬性+偵聽器
2.1 指令補充
2.1.1 指令修飾符
2.1.2 v-bind 對于樣式操作的增強
v-bind 對于樣式控制的增強 - 操作class
案例:京東秒殺tab導航高亮
v-bind 對于樣式控制的增強 - 操作style
2.1.3 v-model 應用于其他表單元素
2.2 computed計算屬性
2.2.1 基礎語法
2.2.2 computed 計算屬性 VS methods 方法
2.2.3 完整寫法
2.2.4 成績案例
2.3 watch偵聽器
2.3.1 基礎語法
2.3.2 完整寫法
2.4 綜合案例 - 水果購物車
一、Vue2.x:快速上手+插值表達式+指令上
1.1 Vue快速上手
1.1.1 Vue概念
Vue 是什么?
概念:Vue是一個用于 ①構建用戶界面的 ②漸進式 ③框架
解釋如下:
①構建用戶界面的 :基于數據渲染出用戶看到的頁面
②漸進式:循序漸進
Vue的兩種使用方式:
①Vue核心包開發
- 場景:局部模塊改造
②Vue核心包 & Vue插件工程化開發
- 場景:整站開發
③框架:一套完整的項目解決方案
優點:大大提升開發效率(70%↑)
缺點:需要理解記憶規則→官網
Vue2官網:https://v2.cn.vuejs.org/
Vue3官網:https://cn.vuejs.org/
總結:
Vue是什么?
Vue是一個用于 構建用戶界面 的 漸進式 框架
- 構建用戶界面:基于數據動態渲染頁面
- 漸進式:循序漸進的學習
- 框架:一套完整的項目解決方案,提升開發效率↑ (理解記憶規則) 規則→官網
1.1.2 創建實例
創建Vue實例,初始化渲染
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title>
</head><body><!-- 創建Vue實例,初始化渲染1.準備容器(Vue所管理的范圍)2.引包 (開發版本包 /生產版本包) 官網3.創建實例4.添加配置項=>完成渲染 --><div id="app"><h1>{{ msg }}</h1><a href="#">{{ count }}</a></div><!-- 引入的是開發版本包-包含完整的注釋和警告 --><script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script><script>// 一旦引入VueJS核心包,在全局環境,就有了 Vue 構造函數const app = new Vue({// 通過 el 配置選擇器,指定 Vue 管理的是哪個盒子el: "#app",// 通過 data 提供數據data: {msg: "Hello",count: 666,},});</script>
</body></html>
總結:
創建Vue實例,初始化渲染的核心步驟:
- 準備容器
- 引包(官網) - 開發版本 / 生產版本
- 創建Vue實例 new Vue()
- 指定配置項 el data =>渲染數據
① el 指定掛載點,選擇器指定控制的是哪個盒子
② data提供數據
1.1.3 插值表達式 { { }}
插值表達式是一種 Vue 的模板語法
1. 作用:利用表達式進行插值,渲染到頁面中
表達式:是可以被求值的代碼,JS引擎會將其計算出一個結果
2. 語法:{ { 表達式 }}
3. 注意點:
(1) 使用的數據必須存在(data)
(2) 支持的是表達式,而非語句,比如:if、for ...
(3) 不能在標簽屬性中使用 { { }} 插值
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title>
</head><body><!-- 插值表達式: Vue的一種模板語法作用:利用 表達式 進行插值渲染語法: {{ 表達式 }} 注意點:1.使用的數據要存在2.支持的表達式,不是語句 if for 3.不能在標簽屬性中使用 {{ }}--><div id="app"><p>{{nickname}}</p><p>{{nickname.toUpperCase()}}</p><p>{{nickname + "你好"}}</p><p>{{age>=18 ? "成年":"未成年"}}</p><p>{{friend.name}}</p><p>{{friend.desc}}</p></div><!-- 引入的是開發版本包-包含完整的注釋和警告 --><script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script><script>const app = new Vue({el: "#app",data: {nickname: "tony",age: 18,friend: {name: "小明",desc: "喜歡唱歌",},},});</script>
</body></html>
總結:
1. 插值表達式的作用是什么?
- 利用表達式進行插值,將數據渲染頁面中
2. 語法格式?
- { { 表達式 }}
3. 插值表達式的注意點:
①使用的數據要存在(data)
②支持的是表達式,而非語句 if ... for
③不能在標簽屬性里面使用
1.1.4 響應式特性
Vue核心特性:響應式
我們已經掌握了基礎的模板渲染,其實除了基本的模板渲染,Vue背后還做了大量工作。
比如:數據的響應式處理 → 響應式:數據變化,視圖自動更新
數據改變,視圖會自動更新
聚焦于數據 → 數據驅動視圖
使用Vue開發,關注業務的核心邏輯,根據業務修改數據即可
總結:
1. 什么是響應式呢?
- 數據改變,視圖自動更新
- 使用Vue開發→專注于業務核心邏輯即可
2. 如何訪問或修改數據呢?
- data中的數據,最終會被添加到實例上
- ①訪問數據:"實例.屬性名"
- ②修改數據:"實例.屬性名"= "值"
1.1.5 開發者工具
安裝Vue開發者工具:裝插件調試Vue應用
(1)通過谷歌應用商店安裝(國外網站)
(2)極簡插件:下載→開發者模式→拖拽安裝→插件詳情允許訪問文件
https://chrome.zzzmh.cn/index
打開 Vue 運行的頁面,調試工具中 Vue欄,即可查看修改數據,進行調試。
1.2 Vue指令
Vue 會根據不同的【指令】,針對標簽實現不同的【功能】
指令:帶有 v-前綴 的 特殊 標簽屬性
1.2.1 v-html
作用:設置元素的 innerHTML
語法:v-html= "表達式"
總結:
1. 什么是Vue指令呢?
- 指令就是帶有 v-前綴 的特殊 屬性,不同屬性 對應 不同的功能
- 學習不同指令 → 解決不同業務場景需求
2.如果需要動態解析標簽,可以用哪個指令?語法?
v-html="表達式"→動態設置元素 innerHTML
1.2.3 v-show / v-if
v-show
作用:控制元素顯示隱藏
語法:v-show= "表達式" 表達式值 true顯示,false隱藏
原理:切換 display:none 控制顯示隱藏
場景:頻繁切換顯示隱藏的場景
v-if
作用:控制元素顯示隱藏(條件渲染)
語法:v-if="表達式" 表達式值true顯示,false 隱藏
原理:基于條件判斷,是否創建或移除元素節點
場景:要么顯示, 要么隱藏,不頻繁切換的場景
總結:
- v-show 底層原理:切換 CSS 的 display:none 來控制顯示隱藏
- v-if 底層原理:根據判斷條件控制元素的 創建 和 移除
1.2.4 v-else / v-else-if
作用:輔助 v-if 進行判斷渲染
語法:v-else v-else-if = "表達式"
注意:需要緊挨著 v-if 一起使用
1.2.5 v-on
作用:注冊事件 = 添加監聽 + 提供處理邏輯
語法:① v-on:事件名= "內聯語句" ② v-on:事件名= "methods中的函數名"
簡寫:@事件名
注意:methods函數內的 this指向Vue實例
v-on 調用傳參
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>.box {border: 3px solid #000000;border-radius: 10px;padding: 20px;margin: 20px;width: 200px;}h3 {margin: 10px 0 20px 0;}p {margin: 20px;}</style>
</head><body><div id="app"><div class="box"><h3>小黑自動售貨機</h3><button @click="buy(5)">可樂5元</button><button @click="buy(10)">咖啡10元</button></div><p>銀行卡余額:{{ money }}元</p>