Vue ①-实例 || 指令

article/2025/6/12 9:20:33

在这里插入图片描述

Vue

Vue 是一个构建用户界面的渐进式框架,也就是 UI 框架。

创建 Vue 实例

创建 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.16/dist/vue.js"></script> -->
<script src="./vue.js"></script><script>// 一旦引入 VueJS核心包,在全局环境,就有了 Vue 构造函数const app = new Vue({// 通过 el 配置选择器,指定 Vue 管理的是哪个盒子(el指定挂载点)el: "#app",// 通过 data提供数据data: {msg: "Hello Vue.js",count: 666}})
</script>

插值表达式

插值表达式:

  • 作用:利用表达式进行插值渲染
  • 语法: {{ 表达式 }}

注意点:

  1. 使用的数据要存在
  2. 支持的是表达式,不是语句 iffor
  3. 不能在标签属性中使用 {{ }}
<div id="app"><p>{{ nickname }}</p><p>{{ nickname.toUpperCase() }}</p><p>{{ nickname + '你好' }}</p><p>{{ age >= 18 ? '成年' : '未成年' }}</p><p>{{ friend.hobby }}</p><p>{{ friend.name }}</p>
</div><script>const app = new Vue({el: "#app",data: {nickname: "tony",age: 18,friend: {name: 'pony',hobby: '热爱学习Vue',},}})
</script>

响应式

响应式:

  • 数据变化,视图自动更新

访问 data 中的数据,最终会被添加到实例上

  1. 访问数据:实例.属性名
  2. 修改数据:实例.属性名 = 新值
<div id="app">{{ msg }}
</div><script>const app = new Vue({el: '#app',data: {// 响应式数据 -> 数据变化了,视图自动更新msg: '你好,黑马',},})
</script>

Vue 指令

Vue 会根据不同的 指令,针对标签实现不同的功能

指令: 带有 v-前缀 的特殊标签属性

v-html

相当于 JS 的 innerHTML,可以渲染 HTML 代码

<div id="app"><div v-html="msg"></div>
</div><script>const app = new Vue({el: '#app',data: {msg: `<h3>Java 炒粉</h3>`}})
</script>

v-show | v-if

v-show:切换 css 的 display:none 来控制显示隐藏(频繁切换显示隐藏的场景)

v-if:根据判断条件控制元素的创建和移除(条件渲染)(要么显示,要么隐藏,不频繁切换的场景)

<div id="app"><div v-show="flag" class="box">我是v-show控制的盒子</div><div v-if="flag" class="box">我是v-if控制的盒子</div>
</div><script>const app = new Vue({el: '#app',data: {flag: false}})
</script>

v-else | v-else-if

<div id="app"><p v-if="gender === 1">性别:♂ 男</p><p v-else>性别:♀ 女</p><hr><p v-if="score >= 90">成绩评定A:奖励电脑一台</p><p v-else-if="score >= 80">成绩评定B:奖励周末郊游</p><p v-else-if="score >= 60">成绩评定C:奖励零食礼包</p><p v-else>成绩评定D:惩罚一周不能玩手机</p>
</div><script>const app = new Vue({el: '#app',data: {gender: 1,score: 85}})
</script>

v-on

作用: 注册事件 = 添加监听 + 提供处理逻辑
语法:

  • v-on:事件名 = “内联语句”
  • v-on:事件名 = “methods中的函数名”
  • 简写:@事件名
内联语句
<div id="app"><!-- <button v-on:click="count--">-</button> --><button @click="count--">-</button><span>{{ count }}</span><!-- <button v-on:click="count++">+</button> --><button @click="count++">+</button>
</div><script>const app = new Vue({el: '#app',data: {count: 100}})
</script>
配置 methods 函数
<div id="app"><button @click="fn">切换显示隐藏</button><h1 v-show="isShow">程序员</h1>
</div><script>const app = new Vue({el: '#app',data: {isShow: true},methods: {fn() {// 让提供所有的 methods中的函数,this都指向当前实例this.isShow = !this.isShow}}})
</script>
参数传递
<div id="app"><div class="box"><h3>小黑自动售货机</h3><button @click="buy(5)">可乐5元</button><button @click="buy(10)">咖啡10元</button></div><p>银行卡余额:{{ money }}元</p>
</div><script>const app = new Vue({el: '#app',data: {money: 1000,},methods: {buy(price) {this.money -= price}}})
</script>

v-bind

作用:动态的设置 html 的标签属性 → src url title
语法:v-bind:属性名="表达式"
注意:简写形式 :属性名="表达式"

<div id="app"><!-- v-bind:src=""  =>  :src="" --><img v-bind:src="imgUrl" v-bind:title="msg" v-bind:alt="msg"><img :src="imgUrl" :title="msg" :alt="msg">
</div><script>const app = new Vue({el: '#app',data: {imgUrl: './imgs/10-02.png',msg: 'Hello 波仔',}})
</script>

案例:波仔的学习之旅

<div id="app"><button v-show="index > 0" @click="index--">上一页</button><div><img :src="list[index]"></div><button v-show="index < list.length - 1" @click="index++">下一页</button>
</div><script>const app = new Vue({el: '#app',data: {index: 0,list: ['./imgs/11-00.gif','./imgs/11-01.gif','./imgs/11-02.gif','./imgs/11-03.gif','./imgs/11-04.png','./imgs/11-05.png',],},})
</script>

v-for

作用: 基于数据循环, 多次渲染整个元素 → 数组、对象、数字…
遍历数组语法:

  • v-for = "(item, index) in 数组"
  • item 每一项, index 下标
  • 省略 index: v-for = "item in 数组"
<div id="app"><h3>小黑水果店</h3><ul><li v-for="(item, index) in list">{{ item }} - {{ index }}</li><br><li v-for="item in list">{{ item }}</li></ul>
</div><script>const app = new Vue({el: '#app',data: {list: ['西瓜', '苹果', '鸭梨', '榴莲']}})
</script>

案例:波仔的书架

<div id="app"><h3>小黑的书架</h3><ul><li v-for="(item, index) in booksList"><span>{{ item.name }}</span><span>{{ item.author }}</span><!-- 注册点击事件 -> 通过 id进行删除数组中的对应项 --><button @click="del(item.id)">删除</button></li></ul>
</div><script>const app = new Vue({el: '#app',data: {booksList: [{ id: 1, name: '《红楼梦》', author: '曹雪芹' },{ id: 2, name: '《西游记》', author: '吴承恩' },{ id: 3, name: '《水浒传》', author: '施耐庵' },]},methods: {del(id) {// 通过 id进行删除数组中的对应项 -> filter(不会改变原数组)// filter:根据条件,保留满足条件的对应项,得到一个新数组this.booksList = this.booksList.filter(item => item.id !== id)}}})
</script>
key

语法:key 属性 = “唯一标识”
作用:给列表项添加的唯一标识。便于 Vue 进行列表项的正确排序复用。

注意点:

  • key 的值只能是 字符串数字类型
  • key 的值必须具有 唯一性
  • 推荐使用 id 作为 key(唯一),不推荐使用 index 作为 key(会变化,不对应)
<div id="app"><h3>小黑的书架</h3><ul><!-- 给元素添加的唯一标识,便于 Vue进行列表项的正确排序复用 --><li v-for="(item, index) in booksList" :key="item.id"><span>{{ item.name }}</span><span>{{ item.author }}</span><button @click="del(item.id)">删除</button></li></ul>
</div><script>const app = new Vue({el: '#app',data: {booksList: [{ id: 1, name: '《红楼梦》', author: '曹雪芹' },{ id: 2, name: '《西游记》', author: '吴承恩' },{ id: 3, name: '《水浒传》', author: '施耐庵' },{ id: 4, name: '《三国演义》', author: '罗贯中' }]},methods: {del(id) {this.booksList = this.booksList.filter(item => item.id !== id)}}})
</script>

v-model

作用: 给 表单元素 使用, 双向数据绑定 → 可以快速获取设置表单元素内容:

  1. 数据变化 → 视图自动更新
  2. 视图变化 → 数据自动更新

语法: v-model = '变量'

<div id="app">账户:<input type="text" v-model="username"> <br><br>密码:<input type="password" v-model="password"> <br><br><button @click="login">登录</button><button @click="reset">重置</button>
</div><script>const app = new Vue({el: '#app',data: {username: '',password: ''},methods: {login() {alert(this.username +  ' ' + this.password)},reset() {this.username = this.password = ''}}})
</script>

http://www.hkcw.cn/article/MXIldqOhis.shtml

相关文章

尚硅谷redis7 93-97 springboot整合reids之总体概述

93 springboot整合reids之总体概述 总体概述 jedis-lettuce-RedisTemplate三者的联系 名称类型作用描述和其它的关系JedisRedis 客户端早期主流的 Java Redis 客户端&#xff0c;基于阻塞 I/O&#xff0c;同步操作可作为 RedisTemplate 的底层连接实现LettuceRedis 客户端基…

两个女首富杠起来了 医美巨头争议不断

巨子生物和华熙生物近期陷入了各自的尴尬境地。市值745亿港元的医美新贵巨子生物因一位博主的视频面临了广泛的造假质疑。与此同时,业绩下滑的玻尿酸巨头华熙生物发文痛斥券商研报“踩一捧一”,试图证明玻尿酸还未过时,但显得有些无力。一些曾鼓吹重组胶原蛋白和巨子生物的券…

屈原的老家端午要过三次 三次端午的独特庆祝

端午节作为我国最古老的节日之一,在众多习俗中,以纪念屈原影响最为广泛。屈原出生于战国时期的湖北秭归,当地不仅保留着典型的屈原故里端午习俗,还有“端午比年大”的说法。在屈原的家乡湖北秭归乐平里,这里位于山谷中央,四面群山环抱,不远处是长江的支流香溪河。古籍记…

张若昀一家三口现身伦敦过六一 异国街头温馨同游

6月1日,张若昀和唐艺昕带着女儿在伦敦游玩时被网友偶遇。一家三口走在异国街头,画面十分温馨。张若昀推着婴儿车,尽显父爱;唐艺昕穿着黑色衣服,皮肤白皙气质出众;女儿坐在小车上乖巧可爱。明星们在国内逛街容易受到关注,因此他们更倾向于在国外享受私人时光。这次张若昀…

黄石公园车祸致5华人身亡司机涉酒驾 肇事司机酒精含量超标两倍

美国警方于5月30日透露,5月初在黄石国家公园附近发生的一起导致7人死亡的交通事故中,肇事皮卡司机的血液酒精含量超过法定驾驶限值的两倍。这起事故发生在5月1日晚,地点位于美国爱达荷州黄石国家公园附近。事故造成7人死亡、多人受伤。中国驻旧金山总领馆在5月2日确认,死者…

叶童回应与陈丽君合作 虚实共生演绎许仙

5月31日晚,陈丽君与叶童在央视端午晚会上同框,共唱戏歌《浮生一白》。叶童随后在微博发文表示,这次与陈丽君的合作非常特别,虚实共生,共同演绎了这首歌曲。陈丽君也转发了这条微博,表达了与叶童老师合作的喜悦。叶童曾在经典剧作《新白娘子传奇》中成功塑造许仙一角。此次…

AI时代,大公司如何创新?

大模型时代&#xff0c;以OpenAI&#xff0c;DeepSeek为首的一些创业公司迅速崛起&#xff0c;微软、苹果、谷歌、华为等大公司跟他们相比&#xff0c;明显迟缓。所以自己最近一直在思考和观察创业公司的创新模式&#xff0c;看看有什么启发。 “强大的物种追求繁殖能力强。”是…

混沌映射(Chaotic Map)

一.定义 混沌映射是指一类具有混沌行为的离散时间非线性动力系统&#xff0c;通常由递推公式定义。其数学形式为 &#xff0c;其中 f 是非线性函数&#xff0c;θ 为参数。它们以简单的数学规则生成复杂的、看似随机的轨迹&#xff0c;是非线性动力学和混沌理论的重要研究对象…

Python训练营打卡Day41

DAY 41 简单CNN 知识回顾 1.数据增强 2.卷积神经网络定义的写法 3.batch归一化&#xff1a;调整一个批次的分布&#xff0c;常用与图像数据 4.特征图&#xff1a;只有卷积操作输出的才叫特征图 5.调度器&#xff1a;直接修改基础学习率 卷积操作常见流程如下&#xff1a; 输入…

Java中的继承

1.继承的语法 2.如何访问父类的成员变量和方法 3.super的使用 4.继承中的构造函数 5.父类和子类代码块调用顺序 6.protected的使用 7.final的使用 1.继承的语法 在日常生活的&#xff0c;我们一听到继承&#xff0c;就会想到继承家里的财产&#xff0c;所以继承的本质就…

2022年 能源统计年鉴Excel电子版

2022年 能源统计年鉴Excel电子版.ziphttps://download.csdn.net/download/2401_84585615/89772876 https://download.csdn.net/download/2401_84585615/89772876 《中国能源统计年鉴2022》是由国家统计局能源统计司主编的权威性资料书&#xff0c;全面反映了中国能源建设、生产…

牛客小白月赛117

依旧掉分场, 疯狂wa, 感觉越打越菜了.... A. 好字符串 题目描述 给你一个长度为 n 的字符串 s&#xff0c;如果一个小写字母为好字符&#xff0c;当且仅当该小写字母对应的大写字母和它同时在字符串 s 中出现 或者 同时不在字符串 s 中出现&#xff1b;而如果一个字符串为好…

【数据分析】基于Cox模型的R语言实现生存分析与生物标志物风险评估

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理生存分析画图输出图片其他标记物的分析总结系统信息介绍 分析生存数据与多种生物标志物之间的关系。它通过Cox比例风险模型来评估不同生物标志物…

“长大设计歼-90” 小孩哥、小孩姐,尽管大胆畅想

“这里面能装核弹吗?”“叔叔,这炮真能打一万发吗?你们数过吗?”“我长大以后,要设计太空战机歼-90!”小朋友们你们尽情畅想未来国防力量的新篇章将由你们去开创大朋友们且接稚子剑,斩尽暮气来孩子们的奇思妙想还需要你们守护今天,“六一”国际儿童节祝所有大朋友、小朋…

商家炮轰美团神券活动 强制补贴引发争议

一位名为“天才外卖运营课堂”的博主在抖音上表达了对美团618活动的不满,称其为“拿商家的钱,办美团的事”。该活动规定,18元的优惠券中,商家需承担12元,平台补贴6元。面对京东外卖的竞争压力,美团推出了这项举措,但结果却引发了商家和消费者的广泛争议。市场人士指出,…

把足球搞上去 江苏是认真的 “苏超”燃动全省

虎扑App紧急新增“江苏联”频道。在“苏超”第三轮于5月31日开打之前,一票难求和诸梗风行的情势深度交织,让越来越多的网友沉醉其间。玩梗层出不穷:“我从来不关心足球,这次特别关注”“我都不是球迷,我就是为了争口气”“没有假球,全是世仇”“比赛第一,友谊第十四”。…

美洛杉矶港负责人:目前进口量在缓慢回升

美洛杉矶港负责人:目前进口量在缓慢回升 但没达到原有水平美国有线电视新闻网5月30日报道称,尽管美国港口管理方期盼关税出现利好消息,但由于美国政府在关税政策层面的剧烈摇摆,即使有利好消息传出,商品也难以立即恢复流入美国港口。目前,美国港口进口量仍未恢复至原有水…

AE已禁用刷新请释放Caps Lock

用AE 是不是遇到过这样的提示&#xff0c; 不用担心。 只需要关闭大写按键即可 关闭 这个CAPS LOCK 按键即可

俄一桥梁被炸坍塌 已致数十人伤亡 爆炸装置所致

5月31日,俄罗斯布良斯克州一座桥梁发生坍塌,导致一辆从莫斯科开往该州城市克利莫沃的列车脱轨。据初步统计,事故共造成31人伤亡,其中3人不幸遇难,28人被送往医疗机构救治。媒体报道称,不明身份者在桥梁上放置了4个爆炸装置并在列车经过时引爆。桥梁被自制爆炸装置破坏,导…

66条预警齐发!浙江将迎大风暴雨 警惕次生灾害

今天雨水继续,截至6:45分,浙江共有66条气象预警,其中暴雨预警43条,大家出门一定要提高警惕。昨天下午自浙西北地区先起雨,雨量最大时段为5月31日后半夜至6月2日上午,浙中北有大雨暴雨,杭嘉湖大部、宁绍北部、衢州西北部局部有大暴雨。强对流以短时暴雨为主,最大小时雨强…