Vue2+3

Day1

创建Vue实例

准备容器

引包 —— 开发版本

创建Vue实例 —— new Vue()

        指定配置项 el 和 data => 渲染数据

                el指定挂载点,指定控制的是哪个盒子

                data提供数据

<!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 id="app"><!-- 将来会编写一些用于渲染的代码逻辑 --><!-- 插值表达式 --><h1>{{msg}}</h1><a href="#">{{count}}</a></div><!-- 引包 —— 官网v2.cn.vuejs.org 开发版本(包含完整的注释和警告)/生产版本--><script src="vue.js"></script><script>//一旦引入VueJS核心包,在全局环境,就有了Vue构造函数const app = new Vue({//通过el配置选择器,指定Vue管理的是哪个盒子el:'#app',//通过data提供数据data:{msg:'Hello 黑马',count:666}})</script></body>
</html>

插值表达式{{ 表达式 }}

表达式:能求得结果的 ;{{}}插值:用于渲染展示给用户看的文本的

🔺插值表达式不具备解析标签的能力

+ - * / 

三元表达式

obj.name

arr[0]

obj.fn()

▲表达式中的数据需要在data里面声明

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title>
</head>
<body><!-- 容器 --><div id="app"><!-- 将来会编写一些用于渲染的代码逻辑 --><!-- 插值表达式 --><!-- toUpperCase()转大写 --><p>{{ msg.toUpperCase() }}</p><p>{{ msg + '你好' }}</p><p>{{ count >= 18 ? '成年' : '未成年' }}</p><p>{{ friend.name }}</p></div><!-- 引包 —— 官网v2.cn.vuejs.org 开发版本(包含完整的注释和警告)/生产版本--><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:'#app',//通过data提供数据data:{msg:'Hello',count:18,friend:{name:'jepson',desc:'热爱学习'}}})</script></body>
</html>

 

Vue核心特性 —— 数据可以进行响应式处理

何为响应式:数据msg变化(修改),视图自动更新

data里的数据如何访问或修改:"实例.属性名" = "值"

app上拥有msg属性

直接在控制台修改对应属性;视图会更新 

<!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 id="app"><h1>{{msg}}</h1><p>{{count}}</p></div><script src="vue.js"></script><script>//一旦引入VueJS核心包,在全局环境,就有了Vue构造函数const app = new Vue({el:'#app',data:{//响应式数据msg:'你好 黑马',count:666}})</script></body>
</html>

极简插件官网_Chrome插件下载_Chrome浏览器应用商店

Vue指令

指令:带有 v-前缀 的特殊标签属性   <div v-html="str"></div>

v-html

作用:将一个文本当做html标签来解析

语法:v-html = "表达式"

<!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 id="app"><div v-html="msg"></div></div><script src="vue.js"></script><script>//一旦引入VueJS核心包,在全局环境,就有了Vue构造函数const app = new Vue({el:'#app',data:{msg:`<a href="http://www.itheima.com">黑马程序员</a>`}})</script></body>
</html>
<!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 id="app"><div v-html="msg"></div></div><script src="vue.js"></script><script>//一旦引入VueJS核心包,在全局环境,就有了Vue构造函数const app = new Vue({el:'#app',data:{msg:`<h1>学前端,来黑马</h1>`}})</script></body>
</html>
v-show/v-if

控制元素的显示隐藏

区别:

v-show

v-show = "表达式"   表达式值为true显示;值为false隐藏

通过切换css的display:none来控制显示隐藏

场景:适用于频繁需要切换显示隐藏

v-if

v-if = "表达式"   表达式值为true显示;值为false隐藏

根据条件控制元素的创建和移除;其中隐藏就是移除

场景:x;点击叉号

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

v-else-if = "表达式"

<!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 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 >= 70">成绩评定B:奖励周末郊游</p><p v-else-if="score >= 60">成绩评定C:奖励零食礼包</p><p v-else>成绩评定D:惩罚一周不能玩手机</p></div><script src="vue.js"></script><script>//一旦引入VueJS核心包,在全局环境,就有了Vue构造函数const app = new Vue({el:'#app',data:{gender:2,score:95}})</script></body>
</html>

v-on

注册事件

语法:方式1.v-on:事件名 = "内联语句"

                    添加监听   +    提供处理逻辑

<!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 id="app"><button v-on:click="count--">-</button><span>{{count}}</span><button v-on:click="count++">+</button></div><script src="vue.js"></script><script>//一旦引入VueJS核心包,在全局环境,就有了Vue构造函数const app = new Vue({el:'#app',data:{count:100}})</script>
</body>
</html>

鼠标滑入  click => mouseenter

简写:v-on:click => @click

                                @事件名

语法:方式2.语句改成函数名

                      v-on:事件名 = "methods中的函数名"

<!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 id="app"><button @click="fn">切换显示隐藏</button><h1 v-show="isShow">黑马程序员</h1></div><script src="vue.js"></script><script>//一旦引入VueJS核心包,在全局环境,就有了Vue构造函数const app2 = new Vue({el:'#app',data:{isShow:true//默认值},methods:{fn(){app2.isShow = ! app2.isShow}}})</script>
</body>
</html>

🔺methods函数内的this指向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 id="app"><button @click="fn">切换显示隐藏</button><h1 v-show="isShow">黑马程序员</h1></div><script src="vue.js"></script><script>//一旦引入VueJS核心包,在全局环境,就有了Vue构造函数const app2 = new Vue({el:'#app',data:{isShow:true//默认值},methods:{fn(){this.isShow = ! this.isShow}}})</script>
</body>
</html>

传参

语法:@click = "fn(参数1,参数2)"

<!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 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 src="vue.js"></script><script>//一旦引入VueJS核心包,在全局环境,就有了Vue构造函数const app2 = new Vue({el:'#app',data:{money:100},methods:{buy(price){this.money -= price}}})</script>
</body>
</html>

v-bind

动态设置html的标签属性 -> src、url、title ...

场景:有些时候图片路径是动态设置的;不是写死的

语法:v-bind:属性名 = "表达式"

简写::属性名 = "表达式"

<!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 id="app"><!-- <img v-bind:src="imgUrl" v-bind:title="msg"> --><img :src="imgUrl" :title="msg"> </div><script src="vue.js"></script><script>//一旦引入VueJS核心包,在全局环境,就有了Vue构造函数const app2 = new Vue({el:'#app',data:{imgUrl:'../excel/logo.jpg',msg:'logo'}})</script>
</body>
</html>

这个title,鼠标悬停在图片上才会显示

点击按钮切换图片

<!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 id="app"><!-- v-show值为true显示 --><button v-show="index > 0" @click="index--">上一页</button><img v-bind:src="list[index]" ><button v-show="index < list.length-1" @click="index++">下一页</button></div><script src="vue.js"></script><script>const app = new Vue({el:'#app',data:{index:0,list:['../img/1.jpg','../img/2.jpg','../img/3.jpg','../img/4.jpg',]}})</script></body>
</html>
v-for

多用于数组、对象...

遍历数组语法: v-for = "(item,index) in 数组"

item —— 数组中的每一项 ; index —— 数组下标

▲ index可省:v-for = "item in 数组"

<!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 id = "app"><h3>小黑水果店</h3><ul><li v-for="(item,index) in list">{{item}} - {{index}}</li></ul><ul><li v-for="item in list">{{item}}</li></ul></div><script src="vue.js"></script><script>const app = new Vue({el:'#app',data:{list:['西瓜','苹果','鸭梨','榴莲']}})</script></body>
</html>

小黑的书架

js中的filter():对数组进行过滤;创建一个新数组,新数组中的元素是  通过检查的指定数组中符合条件的所有元素

语法:Array.filter(function(currentValue, indedx, arr), thisValue)

其中,函数 function 为必须,数组中的每个元素都会执行这个函数。且如果返回值为 true,则该元素被保留;函数的第一个参数 currentValue 也为必须,代表当前元素的值。

item => item.id!==id 看箭头函数那里

this.booksList = this.booksList.filter((item) => {return item.id!==id;})

前端——JS基础-CSDN博客

<!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 id = "app"><h3>小黑的书架</h3><ul><li v-for="(item,index) in booksList" :key="item.id"><span>{{item.name}}</span><span>{{item.author}}</span><button @click="fn(item.id)">删除</button></li></ul></div><script src="vue.js"></script><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:{fn(id){//console.log('删除',id)this.booksList = this.booksList.filter(item => item.id!==id)}}})</script>
</body>
</html>

v-for里的key

:key="唯一值"

给元素添加的唯一标识;这里相当于给li添加的唯一标识;key值必须具有唯一性,推荐使用id

不加key的话;相当于四个没起名的li;删哪个不知道;需要三个就留前三个li;删最后一个

加key;那就知道了,删key=id那个

v-model

给表单元素使用的,双向数据绑定(数据变化->视图自动更新;视图变化->数据自动更新)

可以快速/实时 获取/设置表单元素内容

语法:v-model = "变量"

<!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 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 src="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=''}}})</script>
</body>
</html>

小黑记事本

序号用index;防止删除不连贯

Day2

指令的修饰符

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/3155.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

AWTK-HarmonyOS NEXT 发布

AWTK 全称为 Toolkit AnyWhere&#xff0c;是 ZLG 倾心打造的一套基于 C 语言开发的 GUI 框架。旨在为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的 GUI 引擎&#xff0c;支持跨平台同步开发&#xff0c;一次编程&#xff0c;到处编译&#xff0c;跨平台使…

新闻稿件管理:SpringBoot框架实战指南

3系统分析 3.1可行性分析 通过对本新闻稿件管理系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本新闻稿件管理系统采用SSM框架&#xff0c;JAVA作为开发语…

太炸裂了,Ollama跑本地模型已成为历史,现在都在使用这个工具,而且还能集成本地知识库

AI的发展速度真是超出我们的想象&#xff0c;遥想几个月前&#xff0c;我还在使用Ollama跑本地大模型&#xff0c;最近有另一款可以跑本地大模型的工具迅速崛起&#xff0c;在GitHub上已有70.3K Stars&#xff0c;相信不久就会超越Ollama&#xff0c;除了可以本地运行大模型之外…

在Vue和OpenLayers中使用移动传感器实现飞机航线飞行模拟

项目实现的核心代码 项目概述 该项目的目标是使用Vue.js作为前端框架&#xff0c;结合OpenLayers用于地图显示&#xff0c;实时获取来自手机传感器的数据&#xff08;如经纬度、高度、速度&#xff09;来模拟飞机在地图上的飞行轨迹。整体架构如下&#xff1a; Vue.js 用于构建…

Proteus中单片机IO口外接LED输出低电平时,引脚却一直保持高电平的问题(已解决)

文章目录 前言解决方法后记 前言 一个排阻接八个 LED&#xff0c;方便又省事&#xff0c;但出现了P1端口输出低电平后&#xff0c;仿真引脚却一直显示红色保持高电平不变&#xff0c;用电压表测量显示 2V 左右。 这是仿真的问题&#xff0c;在用开发板时是不会遇到的&#xff…

神经网络进行波士顿房价预测

前言 前一阵学校有五一数模节校赛&#xff0c;和朋友一起参加做B题&#xff0c;波士顿房价预测&#xff0c;算是第一次自己动手实现一个简单的小网络吧&#xff0c;虽然很简单&#xff0c;但还是想记录一下。 题目介绍 波士顿住房数据由哈里森和鲁宾菲尔德于1978年Harrison …

一分钟讲透聚合SDK的工作原理

聚合 SDK 广告是指通过整合多个广告 SDK&#xff08;软件开发工具包&#xff09;&#xff0c;将来自不同广告平台和渠道的广告资源集中管理和调配&#xff0c;并在应用或平台中展示和投放的一种广告模式。 使用聚合 SDK 可以让开发者或广告运营者更方便地接入多种广告源&#…

Visual Studio | 配置管理

文章目录 一、配置管理1、项目属性1.1、常规1.2、VC 目录1.3、C/C -> 常规1.4、C/C -> 预处理器1.5、C/C -> 预编译头1.6、连接器 -> 常规1.7、连接器 -> 输入 2、编辑2.1、显示空格或tab符 一、配置管理 1、项目属性 1.1、常规 字段功能目标平台版本用于生成…

yolov8涨点系列之增加检测头

文章目录 检测头对于目标检测的作用特征转换与信息提取多尺度目标适应预测与定位损失计算与模型优化 YOLOv8的检测头介绍结构组成特征提取层上采样层特征融合层检测层 工作原理锚点机制优化策略自适应空间特征融合&#xff08;ASFF&#xff09;焦点损失&#xff08;Focal Loss&…

django-tidb版本说明

django-tidb 版本说明 https://github.com/pingcap/django-tidb django-python版本说明 Django 4.2 版本发行说明 | Django 文档 | Django

单元/集成测试解决方案

在项目开发的前期针对软件单元/模块功能开展单元/集成测试&#xff0c;可以尽早地发现软件Bug&#xff0c;避免将Bug带入系统测试阶段&#xff0c;有效地降低HIL测试的测试周期&#xff0c;也能有效降低开发成本。单元/集成测试旨在证明被测软件实现其单元/架构设计规范、证明被…

GOT-OCR:开源免费的OCR项目,多语言多模态识别,端到端识别新体验!不仅能识别文字,连数学公式、图表都不在话下!

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 GOT-OCR2.0是开源端到端模型&#xff0c;实现OCR技术的重大突破。它不仅能够识别标准字体&#xff0c;还能应对各种复杂场景下的文本识别任务&#xf…

打开cmd窗口并执行cmd命令的Windows脚本(.bat文件)

打开cmd窗口并执行cmd命令的Windows脚本(.bat文件) 文章目录 打开cmd窗口并执行cmd命令的Windows脚本(.bat文件) 由于需要频繁在cmd窗口中输入命令设置ssh隧道转发&#xff0c;因此考虑编写一个脚本实现。 参考文章&#xff1a;写一个打开cmd窗口并执行cmd命令的Windows脚本&am…

LabVIEW for Linux 介绍

LabVIEW for Linux 介绍 1. 兼容性 LabVIEW for Linux 设计用于多种 Linux 发行版&#xff0c;包括 CentOS、Ubuntu 等。在安装之前&#xff0c;务必检查与您特定发行版版本的兼容性。 2. 程序移植 可移植性&#xff1a;在许多情况下&#xff0c;LabVIEW 程序&#xff08;VI…

W6100-EVB-Pico2评估板介绍

目录 1 简介 2 硬件资源 2.1 硬件规格 2.2 引脚定义 2.3 工作条件 3 参考资料 3.1 RP2350 数据表 3.2 W6100 数据表 3.3 原理图 原理图 & 物料清单 & Gerber 文件 3.3 尺寸图&#xff08;尺寸&#xff1a;mm&#xff09; 3.4 参考例程 认证 CE FCC 4 硬…

7.2、实验二:被动接口和单播更新

源文件链接&#xff1a; 7.2、实验二&#xff1a;被动接口和单播更新: https://url02.ctfile.com/d/61945102-63671890-6af6ec?p2707 (访问密码: 2707) 一、被动接口 1.介绍 定义: 在路由协议的配置中&#xff0c;一个被动接口指的是一个接口不发送路由更新包的配置方式&a…

前端用docker部署

1、环境检查 首先需要确认服务器上是否已经安装docker了。 在服务器上执行docker -v 显示对应的版本号说明已经安装好了docker 2、部署 使用Docker部署若依项目的前端服务&#xff0c;我们最终实现的是&#xff1a;启动一个镜像&#xff0c;我们的整个前端就启动了&#xf…

SSM老人服务管理系统小程序-计算机设计毕业源码91022

SSM老人服务管理系统小程序 摘 要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#xff0c;科学化…

深度学习基础知识-损失函数

目录 1. 均方误差&#xff08;Mean Squared Error, MSE&#xff09; 2. 平均绝对误差&#xff08;Mean Absolute Error, MAE&#xff09; 3. Huber 损失 4. 交叉熵损失&#xff08;Cross-Entropy Loss&#xff09; 5. KL 散度&#xff08;Kullback-Leibler Divergence&…

ArcGIS影像调色(三原色)三原色调整

本期主要介绍ArcGIS影像调色&#xff08;三原色&#xff09; ArcGIS影像调色&#xff08;三原色&#xff09;&#xff0c;对比度、亮度、gamma。红绿蓝三原色调整。 视频学习 ArcGIS影像调色&#xff08;三原色&#xff09;