Vue2學習(一)——Vue簡介、Vue指令與指令修飾符

一、Vue簡介?

Vue是一套用于構建用戶界面的漸進式框架

所謂漸進式就是循序漸進,不一定非得把Vue中的所有API都學完才能開發Vue,可以學一點開發一點。

Vue2官網地址:https://v2.cn.vuejs.org/

Vue3官網地址:https://cn.vuejs.org/

二、安裝與創建第一個Vue實例

注意:在寫代碼之前要安裝node.js和VS Code編輯器,這里省略。

創建Vue實例,初始化渲染的核心步驟:
1.準備容器
2.引包(官網)- 開發版本/生產版本 ?

開發版本:學習時使用開發版本,報錯更詳細;也可以直接下載vue.js文件

<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>

生產版本:

<script src="https://cdn.jsdelivr.net/npm/vue@2.7.16"></script>

3.創建Vue實例 new Vue()
4.指定配置項 el ?data => 渲染數據
? ?el? ? ? 指定掛載點,選擇器指定控制的是哪個盒子
? ?data ?提供數據?

創建第一個Vue實例:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><body><div class="box"></div><div class="box2"></div><div id="app"><!-- 這里將來會編寫一些用于渲染的代碼邏輯 --><h1>{{msg}}</h1><a href="###">{{count}}</a></div><script src="/day01/vue/vue.js"></script><!-- <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script> --><script>const app = new Vue({// 通過el配置選擇器,指定Vue管理的是哪個盒子el: "#app",// 通過data提供數據data: {msg: "Hello World",count: 6666,},});</script></body>
</html>

三、插值表達式

1.插值表達式概述

????????插值表達式是一種Vue的模板語法,我們可以用插值表達式渲染出Vue提供的數據。

上面代碼的<h1>{{msg}}</h1>就是插值表達式

2.語法

<h3>{{title}}<h3><p>{{nickName.toUpperCase()}}</p><p>{{age >= 18 ? '成年':'未成年'}}</p><p>{{obj.name}}</p><p>{{fn()}}</p>

3.錯誤用法

1.在插值表達式中使用的數據 必須在data中進行了提供
<p>{{hobby}}</p>  //如果在data中不存在 則會報錯2.支持的是表達式,而非語句,比如:if   for ...
<p>{{if}}</p>3.不能在標簽屬性中使用 {{  }} 插值 (插值表達式只能標簽中間使用)
<p title="{{username}}">我是P標簽</p>

4.代碼示例

<body><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><p :title="friend.desc">我是李四</p></div><script src="/day01/vue/vue.js"></script><script>const app = new Vue({el: "#app", //綁定id是app的元素(又稱:容器)// 通過data提供數據data: {nickname: "Hello World",age: 18,friend: {name: "張三",desc: "熱愛學習vue",},},});</script>
</body>

四、響應式

響應式簡單理解就是數據變,視圖對應變。

① 訪問數據: "實例.屬性名"

② 修改數據: "實例.屬性名"= "值"

<body><div id="app">{{msg}} {{count}}</div><!-- <script src="/day01/vue/vue.js"></script> --><script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script><script>const app = new Vue({el: "#app",data: {// 響應式數據msg: "你好",count: 100,},});</script>
</body>

五、Vue開發者工具安裝——Vue.js Devtools

(一)Edge瀏覽器中安裝

在擴展中直接搜素vue,Vue.js.devtools就是,點擊獲取安裝

勾選上紅框的內容?

使用VS Code打開瀏覽器時F12就會有Vue標志了

(二)Google瀏覽器安裝

參考文章:Vue的開發者調試工具(devtools5.3.4)安裝

安裝之后可以F12后看到多一個Vue的調試面板

六、Vue指令

(一)v-show與v-if

????????條件判斷指令,用來輔助開發者按需控制 DOM 的顯示與隱藏。條件渲染指令有如下兩個,分別是: ?

1.v-show

  • 作用: 控制元素顯示隱藏
  • 語法: v-show = "表達式" 表達式值為 true 顯示, false 隱藏
  • 原理: 切換 display:none 控制顯示隱藏
  • 場景:頻繁切換顯示隱藏的場景

2.v-if?

  • 作用: 控制元素顯示隱藏(條件渲染)
  • 語法: v-if= "表達式" 表達式值 true顯示, false 隱藏

  • 原理: 基于條件判斷,是否創建 或 移除元素節點

  • 場景: 要么顯示,要么隱藏,不頻繁切換的場景?

<div id="app"><div v-show="flag" class="box">我是v-show控制的盒子</div><div v-if="flag" class="box">我是v-if控制的盒子</div>
</div><script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script>const app = new Vue({el: '#app',data: {flag: false}})
</script>

(二)v-on與v-bind

1.v-on與v-bind語法

- <button v-on:事件名="內聯語句">按鈕</button>
- <button v-on:事件名="處理函數">按鈕</button>
- <button v-on:事件名="處理函數(實參)">按鈕</button>
- `v-on:` 簡寫為 **@**
- v-bind:動態設置html的標簽屬性 比如:src、url、title
- v-bind: 可以簡寫成 =>   :標簽屬性

注意:

  • 事件處理函數應該寫到一個跟data同級的配置項(methods)中

  • methods中的函數內部的this都指向Vue實例

代碼示例:?

  <body><div id="app"><p v-if="gender == 1">性別:男</p><p v-else>性別:女</p><button @click="count--">-</button><span>{{count}}</span><button @click="count++">+</button><hr /><button @click="fn">切換顯示隱藏</button><h1 v-show="isShow">hello world</h1><!-- v-on調用傳參 --><hr /><div class="box"><h3>自動售貨機</h3><button @click="buy(5)">可樂5元</button><button @click="buy(10)">咖啡10元</button><button @click="buy(8)">牛奶8元</button></div><p>銀行卡余額:{{money}}元</p><!-- v-bind:src   =>   :src --><hr /><img :src="imgUrl" :title="msg" /></div></body><script src="/day01/vue/vue.js"></script><script>const app = new Vue({el: "#app",data: {gender: 2,count: 100,isShow: true,money: 100,imgUrl: "imgs/11-02.gif",msg: "hello",},methods: {fn() {console.log("執行了fn");//   app.isShow= !app.isShow;this.isShow = !this.isShow;},buy(price) {this.money -= price;},},});</script>

2.v-bind對樣式控制的增強-操作class

為了方便開發者進行樣式控制, Vue 擴展了 v-bind 的語法,可以針對 class 類名style 行內樣式 進行控制 。

2.1語法
<div> :class = "對象/數組">這是一個div</div>
2.2對象語法

當class動態綁定的是對象時,鍵就是類名,值就是布爾值,如果值是true,就有這個類,否則沒有這個類

<div class="box" :class="{ 類名1: 布爾值, 類名2: 布爾值 }"></div>

適用場景:一個類名,來回切換

2.3數組語法

當class動態綁定的是數組時 → 數組中所有的類,都會添加到盒子上,本質就是一個 class 列表

<div class="box" :class="[ 類名1, 類名2, 類名3 ]"></div>

使用場景:批量添加或刪除類

  <body><div id="app"><ul><liv-for="(item, index) in list":key="item.id"@click="activeIndex = index"><a :class="{active:index === activeIndex}" href="#">{{item.name}}</a></li></ul></div></body><script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script><!-- <script src="./vue/vue.js"></script> --><script>const app = new Vue({el: "#app",data: {activeIndex: 0, // 記錄高亮,給出默認的索引位置list: [{ id: 1, name: "京東秒殺" },{ id: 2, name: "每日特價" },{ id: 3, name: "品類秒殺" },],},});</script>
<style>* {margin: 0;padding: 0;}ul {display: flex;border-bottom: 2px solid #e01222;padding: 0 10px;}li {width: 100px;height: 50px;line-height: 50px;list-style: none;text-align: center;}li a {display: block;text-decoration: none;font-weight: bold;color: #333333;}li a.active {background-color: #e01222;color: #fff;}
</style>

?

思路:

1.基于數據,動態渲染tab(v-for)

2.準備一個下標 記錄高亮的是哪一個 tab

3.基于下標動態切換class的類名

3.v-bind對有樣式控制的增強-操作style

語法:

<div class="box" :style="{ CSS屬性名1: CSS屬性值, CSS屬性名2: CSS屬性值 }"></div>

?

(三)v-for

v-for 用來輔助開發者基于一個數組來循環渲染一個列表結構。

v-for 指令需要使用(item, index) in arr形式的特殊語法,也可以遍歷對象和數字,其中:

  • item 是數組中的每一項

  • index 是每一項的索引,不需要可以省略

  • arr 是被遍歷的數組

<body><div id="app"><ul><li v-for="(item, index) in list" :key="index">{{item}}</li></ul><hr /><ul><li v-for="(book, index) in booksList" :key="book.id"><span>{{book.name}}</span><span>{{book.author}}</span><!-- 注冊點擊事件-> 通過id進行刪除數組中的對應項 盡量不使用index刪除,因為id更穩定 --><button @click="deleteBook(book.id)">刪除</button></li></ul>      </div></body><!-- <script src="vue/vue.js"></script> --><script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script><script>const app = new Vue({el: "#app",data: {list: ["張三", "李四", "王五", "jack"],booksList: [{ id: 1, name: "《紅樓夢》", author: "曹雪芹" },{ id: 2, name: "《西游記》", author: "吳承恩" },{ id: 3, name: "《水滸傳》", author: "施耐庵" },{ id: 4, name: "《三國演義》", author: "羅貫中" },],},methods: {deleteBook(id) {console.log(id);this.booksList = this.booksList.filter((item) => item.id !== id);},        },});</script>

v-for中的key

語法: key="唯一值"

作用:給列表項添加的唯一標識。便于Vue進行列表項的正確排序復用

為什么加key:Vue 的默認行為會嘗試原地修改元素(就地復用

注意:

  1. key 的值只能是字符串 或 數字類型

  2. key 的值必須具有唯一性

  3. 推薦使用 id 作為 key(唯一),不推薦使用 index 作為 key(會變化,不對應)

(四)v-model

  <body><div id="app">      賬戶:<input type="text" v-model="username" /><br />密碼:<input type="password" v-model="password" /><br /><button @click="login">登錄</button><button @click="reset">重置</button></div></body><!-- <script src="vue/vue.js"></script> --><script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script><script>const app = new Vue({el: "#app",data: {        username: "",password: "",},methods: {       login() {console.log(this.username, this.password);},reset() {this.username = "";this.password = "";console.log(this.username, this.password);},},});</script>

v-model在其他表單元素的使用 ?

常見的表單元素都可以用 v-model 綁定關聯 → 快速 獲取設置 表單元素的值

它會根據 控件類型 自動選取 正確的方法 來更新元素

輸入框 ?input:text ? ——> value
文本域 ?textarea?? ? ——> value
復選框 ?input:checkbox ?——> checked
單選框 ?input:radio ? ——> checked
下拉菜單 select ? ?——> value
...

<body><div id="app"><h3>xx學習網</h3>姓名:<input type="text" v-model="username" /><br /><br />是否單身:<input type="checkbox" v-model="isSingle" /><br /><br /><!-- 1. name:  給單選框加上 name 屬性 可以分組 → 同一組互相會互斥2. value: 給單選框加上 value 屬性,用于提交給后臺的數據-->性別:<input v-model="gender" type="radio" name="gender" :value="1" />男<input v-model="gender" type="radio" name="gender" :value="2" />女<br /><br /><!-- 1. option 需要設置 value 值,提交給后臺2. select 的 value 值,關聯了選中的 option 的 value 值-->所在城市:<select v-model="cityId" ><option value="1">北京</option><option value="2">上海</option><option value="3">成都</option><option value="4">南京</option></select>    {{cityId}}<br /><br />自我描述:<textarea v-model="desc"></textarea><button>立即注冊</button></div><script src="./vue/vue.js"></script><script>const app = new Vue({el: "#app",data: {username: "789",isSingle: true,gender: 1,cityId: '3',desc: "",},methods: {fun() {console.log(this.cityId);},},});</script></body>

?

(五)綜合案例——記事本

<body><!-- 主體區域 --><section id="app"><!-- 輸入框 --><header class="header"><h1>記事本</h1><input placeholder="請輸入任務" class="new-todo" v-model="todoName" /><button class="add" @click="addTodo">添加任務</button></header><!-- 列表區域 --><section class="main"><ul class="todo-list"><li class="todo" v-for="(item, index) in list" :key="index"><div class="view"><span class="index">{{index+1}}</span><label>{{item.name}}</label><button class="destroy" @click="del(item.id)"></button></div></li></ul></section><!-- 統計和清空 --><footer class="footer" v-show="this.list.length > 0"><!-- 統計 --><span class="todo-count">合 計:<strong> {{list.length}} </strong></span><!-- 清空 --><button class="clear-completed" @click="resetToDo">清空任務</button></footer></section></body><!-- 底部 --><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><script>const app = new Vue({el: "#app",data: {todoName: "",list: [{ id: 1, name: "跑步十公里" },{ id: 2, name: "跑步五公里" },{ id: 3, name: "跑步三公里" },],isShow: true,},methods: {del(id) {this.list = this.list.filter((item) => item.id !== id);},addTodo() {if (this.todoName.trim() !== "") {this.list.push({id: +new Date(),name: this.todoName,});// 添加完成后要清空輸入框this.todoName = "";} else {return;}console.log(this.list);},resetToDo() {this.list = [];},},});</script>

七、指令修飾符

所謂指令修飾符就是通過“.”指明一些指令后綴 不同的后綴封裝了不同的處理操作 —> 簡化代碼

1.按鍵修飾符

@keyup.enter —>當點擊enter鍵的時候才觸發

<input type="text" v-model.trim="username" @keyup.enter="writeSomething"/>
<input type="text" v-model.trim.number="age" @keyup.enter="writeSomething"/>
<header class="header"><h1>記事本</h1><input@keyup.enter="addTodo"placeholder="請輸入任務"class="new-todo"v-model="todoName"/><button class="add" @click="addTodo">添加任務</button>
</header>

此時,點擊添加按鈕和回車,都能觸發addTodo函數

小tips:通過函數的形參,可以拿到事件綁定的對象

  <body><div id="app"><button @click="handleClick">點擊我</button></div></body><script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><script>const app = new Vue({el: "#app",data: {},methods: {handleClick(event) {console.log(event); // 這里可以訪問到事件對象console.log(event.target);console.log(event.type);console.log(event.pageX);// 可以訪問 event.target, event.type, event.pageX 等屬性},},});</script>

2.v-model修飾符

  • v-model.trim —>去除兩端空格

  • v-model.number —>轉數字

姓名:<input type="text" v-model.trim="username" @keyup.enter="writeSomething"/>
年齡<input type="text" v-model.trim.number="age" @keyup.enter="writeSomething"/>

3.事件修飾符

  • @事件名.stop —> 阻止冒泡

  • @事件名.prevent —>阻止默認行為

  • @事件名.stop.prevent —>可以連用 即阻止事件冒泡也阻止默認行為?

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

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

相關文章

Redis--通用命令學習

目錄 一、引言 二、基礎命令 1.set 2.get 3.keys 3.1 keys &#xff1f; 3.2 keys * 3.3 keys [abe] 3.4 keys [^] 3.5 keys [a-b] 4.exists 5.delete 6.expire 7.ttl 8.type 三、Redis中的過期策略&#xff08;面試題&#xff09; 1.惰性刪除 2.定期刪除 …

Linux程序設計(第四版)| 學習筆記

上次學習Linux相關內容還是上學的時候為了應付考試&#xff0c;最近有項目涉及Linux&#xff0c;重新學習以下。 很多年前關于Linux的總結 一、入門 1.概念 (1) UNIX 1)定義&#xff1a;指的是一種遵循特定規范的計算機操作系統。 2)特點&#xff1a;簡單性、集中性、可重用…

PostgreSQL 的歷史

title: PostgreSQL 的歷史 date: 2024/12/23 updated: 2024/12/23 author: cmdragon excerpt: PostgreSQL 是一款功能強大且廣泛使用的開源關系型數據庫管理系統。其歷史可以追溯到1986年,當時由加州大學伯克利分校的一個研究團隊開發。文章將深入探討 PostgreSQL 的起源、…

Ubuntu22.04 LTS 安裝nvidia顯卡驅動

準備跑老師給定的Github上的多模態源碼,但是用了這么久ubuntu還沒有嘗試過安裝nvidia驅動,好在也是一次成功,于是記錄下來。 借鑒的是Ubuntu22.04安裝顯卡驅動(高速、避錯版)-CSDN博客這篇文章,按照流程來基本沒有問題,不過個人覺得有些步驟比較冗余,所以記錄下來 主要…

WPS工具欄灰色怎么辦

WPS離線不登錄&#xff0c;開啟工具欄等相關功能 當你在使用WPS的過程中&#xff0c;若因網絡問題或其他特殊原因&#xff0c;導致無法登錄使用WPS時&#xff0c;可根據以下步驟開啟離線兼容模式&#xff0c;開啟此模式后&#xff0c;可在未登錄的狀態下&#xff0c;激活并使用…

國標GB28181-2022平臺EasyGBS:安防監控中P2P的穿透方法

在安防監控領域&#xff0c;P2P技術因其去中心化的特性而受到關注&#xff0c;尤其是在遠程視頻監控和數據傳輸方面。P2P技術允許設備之間直接通信&#xff0c;無需通過中央服務器&#xff0c;這在提高效率和降低成本方面具有明顯優勢。然而&#xff0c;P2P技術在實際應用中也面…

Mac Android studio 升級LadyBug 版本,所產生的bug

當Build 出現&#xff0c;這樣的文字以后&#xff1a; Your build is currently configured to use incompatible Java 21.0.3 and Gradle 7.3.3. Cannot sync the project. We recommend upgrading to Gradle version 8.9. The minimum compatible Gradle version is 8.5. …

com.google.common.collect.ImmutableList$SerializedForm

今天AndroidStudio安裝了個2021版本的&#xff0c;gradle用了7.3.3&#xff0c;創建項目后控制臺總是有這樣一個錯誤&#xff1a; Unable to load class com.google.common.collect.ImmutableList$SerializedForm. This is an unexpected error. Please file a bug containing…

Docker部署Sentinel

一、簡介 是什么&#xff1a;面向分布式、多語言異構化服務架構的流量治理組件 能干嘛&#xff1a;從流量路由、流量控制、流量整形、熔斷降級、系統自適應過載保護、熱點流量防護等多個維度來幫助開發者保障微服務的穩定性 官網地址&#xff1a;https://sentinelguard.io/zh-c…

HTMLCSSJavaScriptDOM 之間的關系?

一、HTML 中文名&#xff1a;超文本標記語言 英文名&#xff1a;HyperText Markup Language HTML是一種用來結構化Web網頁及其內容的標記語言。 HTML 由一系列的元素組成&#xff0c;這些元素可以用來包圍不同部分的內容&#xff0c;使其以某種方式呈現或者工作。 圖Ⅰ 每…

Hadoop集群(HDFS集群、YARN集群、MapReduce?計算框架)

一、 簡介 Hadoop主要在分布式環境下集群機器&#xff0c;獲取海量數據的處理能力&#xff0c;實現分布式集群下的大數據存儲和計算。 其中三大核心組件: HDFS存儲分布式文件存儲、YARN分布式資源管理、MapReduce分布式計算。 二、工作原理 2.1 HDFS集群 Web訪問地址&…

位運算符、標記位傳參

位運算符&#xff1a; 位運算符作用于操作數的位&#xff08;bit&#xff09;。 按位與&#xff08;&&#xff09;對應位都為1時結果為1 int a 5; // 0101 int b 3; // 0011 int result a & b; // 0001 按位或&#xff08;|&#xff09;對應位至少有一個為1時結…

施耐德變頻器ATV320系列技術優勢:創新與安全并重

在工業自動化領域&#xff0c;追求高效、安全與智能已成為不可阻擋的趨勢。施耐德變頻器ATV320系列憑借其強大的設計標準和全球認證&#xff0c;成為能夠幫助企業降低安裝成本&#xff0c;提高設備性能的創新解決方案。 【全球認證&#xff0c;品質保障】ATV320 系列秉持施耐德…

項目練習:element-ui的valid表單驗證功能用法

文章目錄 一、情景說明二、代碼實現 一、情景說明 一般表單提交的時候&#xff0c;都要對表單數據進行前段驗證。 比如登陸表單提交。 二、代碼實現 package.json "element-ui": "2.15.14",main.js 引用ElementUI import ElementUI from element-ui; i…

【es6復習筆記】Symbol 類型及其應用(9)

一、Symbol 簡介 Symbol 是 JavaScript 中的一種基本數據類型&#xff0c;它表示唯一的標識符。Symbol 的主要目的是防止屬性名沖突&#xff0c;尤其是在多個代碼庫或模塊中共享對象時。Symbol 值可以用作對象的屬性名&#xff0c;這樣可以確保屬性名是唯一的&#xff0c;不會…

Linux挖礦程序排查

一、背景 我們收到一個阿里云安全告警&#xff0c;內容是服務器可能存在挖礦程序。 二、殺死挖礦程序 2.1 找到可疑服務器進程 #1.輸入top命令&#xff0c;輸入shift P會按照cpu的使用率大小從大到小進行排序&#xff0c;cpu使用率高的就是可疑進程。 top #2.查看運行該進程…

zabbix監控山石系列Hillstone配置模版(適用于zabbix6及以上)

監控項&#xff1a; 觸發器&#xff1a; 監控數據&#xff1a;

PE文件結構

PE文件是Windows系統下可執行文件的總稱&#xff0c;英文全稱 Portable Executable 可移植的可執行文件&#xff0c;常見的有exe、dll、sys、com、ocx 對于學習反&#xff08;木馬、免殺、病毒、外掛、內核&#xff09;&#xff0c;了解PE文件結構是非常有必要且非常非常重要的…

C語言-08復合類型-結構體

一、結構體 1.結構體struct struct關鍵字&#xff0c;允許自定義復合數據類型&#xff0c;將不同類型的值組合在一起&#xff0c;這種類型稱為結構體類型。 2.使用步驟 第一步&#xff1a;創建或聲明結構體 第二步&#xff1a;定義結構體變量 第三步&#xff1a;調用并操作結…

Web前端基礎知識(一)

前端是構建網頁的一部分&#xff0c;負責用戶在瀏覽器中看到和與之交互的內容。 網頁是在瀏覽器中呈現內容的文檔或頁面。 通常&#xff0c;網頁使用HTML、CSS、JavaScript(JS)組成。 HTML:定義了頁面的結構和內容。包括文本、圖像、鏈接等。 CSS&#xff1a;定義頁面的樣式…