Vue知识学习

Vue 是什么?

概念:Vue 是一个用于构建用户界面的渐进式框架

Vue 的两种使用方式:

① Vue 核心包开发 场景:局部 模块改造 ② Vue 核心包& Vue插件工程化开发 场景:整站开发

创建Vue 实例,初始化渲染的核心步骤:

1.准备容器 2.引包(官网) - 开发版本/生产版本 3.创建 Vue 实例new Vue() 4.指定配置项el data =>渲染数据 ① el指定挂载点,选择器指定控制的是哪个盒子 ② data 提供数据

<div id="app">
<!-- 这里将来会编写一些用于渲染的代码逻辑 -->
<h1>{{ msg }}</h1>
{{ count }}</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}
}

插值表达式 {{ }}

插值表达式是一种Vue 的模板语法

作用:利用表达式进行插值,渲染到页面中。

表达式:是可以被求值的代码,JS引擎会将其计算出一个结果

money +100  
money - 100 
money* 10   
money / 10  
price >= 100 ? '真贵’:'还行'    
obj.name    
arr[0]  
fn( )   
obj.fn()

注意点:

  1. 使用的数据必须存在(data)

  2. 支持的是表达式,而非语句,比如:if for ...

  3. 不能在标签属性中使用{{}}插值

<p> title="{{ username }}">我是p标签</p>//这是错的。

响应式

1.什么是响应式呢?

数据改变,视图自动更新(网页上的数据表示改变) 使用 Vue 开发→专注于业务核心逻辑 即可

2.如何访问或修改数据呢?

data中的数据,最终会被添加到实例上 ①访问数据:"实例.属性名" ②修改数据:"实例.属性名"="值"

Vue 指令

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

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

v-html

作用:设置元素的innerHTML

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

<div v-html="str"></div>

v-show

作用:控制元素显示隐藏

语法:v-show="表达式"表达式值 true 显示,false 隐藏

原理: 切换 display:none控制显示隐藏

v-if

作用:控制元素显示隐藏(条件渲染)、

语法:v-if="表达式" 表达式值 true 显示,false 隐藏

原理:基于条件判断,是否创建 或 移除元素节点

场景:要么显示,要么隐藏,不频繁切换的场景驱

与v-show不同的是非隐藏,是消失。

v-else、v-else-if

作用: 辅助v-if进行判断渲染

语法:v-else v-else-if="表达式"

注意:需要紧挨着v-if一起使用

<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 >

v-on

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

语法: ①v-on:事件名="内联语句" ②v-on:事件名="methods中的函数名"

简写: @事件名

<button v-on:click="count++">按钮</button>
<button @click="count++">按钮</button>=
<button @click="fn">-</button>
​
const app = new vue({   
el: '#app',
data:{  
// 提供数据
count: 100
}
methods: {  
// 提供处理逻辑函数
 fn () {
 console.log('提供逻辑代码')
 }
}
})

v-on 调用传参

<button @click=' fn(参数1,参数2)"> 按钮</button>
const app = new vue({
el: '#app', 
methods:{
fn (a, b) {
console.Iog('这是一个fn函数')}
}
})

v-bind

作用:动态的设置html的标签属性→ src url title ...

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

注意:

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

<div id="app">
<img v-bind:src="url"></div>
const app = new vue({ 
el: '#app', 
data: {
url:'图片路径'
}
})

v-bind 对于样式控制的增强- 操作class

语法:class = "对象/数组"

1.对象 → 键就是类名,值是布尔值。如果值为true,有这个类,否则没有这个类

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

适用场景:一个类名,来回切换

2.数组 → 数组中所有的类,都会添加到盒子上,本质就是一个 class 列表

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

适用场景:批量添加或删除类

<div class="box" :class="{ pink: true,rbig:true }">黑马程序员</div>
<div class="box" :class="['pink', 'big']">黑马程序员</div>

v-bind 对于样式控制的增强-操作style

语法 :style = "样式对象"

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

适用场景:某个具体属性的动态设置

v-for

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

遍历数组语法:

v-for = "(item, index) in 数组"

item 每一项,index 下标

可以省略index:

v-for= "item in 数组"

v-for 中的 key

key作用:给元素添加的唯一标识。

不加 key时,v-for 的默认行为会尝试原地修改元素(就地复用)

注意点:

  1. key 的值只能是字符串 或 数字类型

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

  3. 推荐使用 id 作为key(唯一),不推荐使用index作为key(会变化,不对应)

<li v-for="(item, index) in xxx" :key="唯一值">

v-model

作用: 给 表单元素 使用,双向数据绑定→可以快速获取 或 设置表单元素内容 ①数据变化→视图自动更新 ②视图变化→数据自动更新

语法:v-model='变量'

v-model 应用于其他表单元素

常见的表单元素都可以用v-model绑定关联→快速 获取 或 设置 表单元素的值

它会根据控件类型自动选取正确的方法来更新元素

输入框 input:text →value 文本域 textarea →value 复选框input:checkbox→ checked 单选框input:radio → checked 下拉菜单 select →value ...

前置理解:
1. name: 给单选框加上name属性可以分组→同一组互相会互斥
2.value: 给单选框加上value属性,用于提交给后台的数据结合 Vue 使用→v-model
性别:
<input v-model="gender" type="radio" name="gender" value="1">男
<input v-model="gender" type="radio" name="gender" value="2">女
前置理解:
1. option 需要设置 value 值,提交给后台
2. select 的 value 值,关联了选中的option 的 value 值结合 Vue 使用→ v-model 
所在城市:
<select v-model="cityId">
<option value="101">北京<ioption>
<option value="102">上海</option>
<option value="103">成都</option>
<option value="104">南京</option>

指令修饰符

通过"."指明一些指令 后缀,不同后缀封装了不同的处理操作→简化代码

①按键修饰符

@keyup.enter →键盘回车监听

②v-model修饰符

v-model.trim →去除首尾空格 v-model.number→转数字

③事件修饰符

@事件名.stop→阻止冒泡 @事件名.prevent →阻止默认行为

计算属性

概念:基于现有的数据,计算出来的新属性。依赖的数据变化,自动重新计算。

语法:

①声明在computed配置项中,一个计算属性对应一个函数

②使用起来和普通属性一样使用{{计算属性名}}

computed: {
计算属性名(){
基于现有数据,编写求值逻辑 return 结果}
}

computed 计算属性 vs methods 方法

computed 计算属性:

作用:封装了一段对于数据的处理,求得一个结果。

缓存特性(提升性能):

语法: 计算属性会对计算出来的结果缓存,再次使用直接读取缓存,

①写在computed 配置项中 依赖项变化了,会自动重新计算→并再次缓存 ②作为属性,直接使用→this.计算属性 {{计算属性 }}

methods 方法:

作用:给实例提供一个方法,调用以处理业务逻辑。

语法:

①写在methods 配置项中 ②作为方法,需要调用→ this.方法名() {{ 方法名()}} @事件名="方法名"

计算属性完整写法

计算属性默认的简写,只能读取访问,不能"修改"。

如果要"修改"→ 需要写计算属性的完整写法。

watch 侦听器(监视器)

作用:监视数据变化,执行一些业务逻辑 或异步操作。

语法:

①简单写法→ 简单类型数据,直接监视

data: { 
    words:'苹果', 
obj: {
    words:'苹果'  
    }
},
watch: {
// 该方法会在数据变化时,触发执行  
数据属性名(newValue,oldValue){   
一些业务逻辑 或异步操作。
},
'对象.属性名’(newValue, oldValue) {一些业务逻辑或异步操作。
}

② 完整写法→添加额外配置项

(1) deep: true对复杂类型深度监视

(2) immediate: true 初始化立刻执行一次handler方法

data: { 
    obj: {  
    words:'苹果', 
    ang:'italy'
    },
},
watch: {// watch完整写法    
数据属性名:{ 
deep: true, // 深度监视 
immediate: true,// 是否立刻执行一次handler handler (newValue) { 
console.log(newValue)
}}}

Vue 生命周期

Vue生命周期:一个Vue实例从创建 到销毁的整个过程。

Vue 生命周期函数(钩子函数) Vue生命周期过程中,会自动运行一些函数,被称为【生命周期钩子】→让开发者可以在【特定阶段】运行自己的代码。

created: 响应式数据准备好了,可以开始发送初始化渲染请求。 mounted: 模板渲染完成,可以开始操作DOM了。

ECharts

  1. 引入 ECharts 库:在 HTML 文件中引入 ECharts 的库文件,可以通过 CDN 或者下载本地文件的方式引入。示例代码如下:

<script src="https://cdn.jsdelivr.net/npm/echarts@5.5.0/dist/echarts.min.js"></script>
  1. 准备一个具有固定大小的 DOM 容器用于放置图表,示例代码如下:

<div id="chart" style="width: 600px; height: 400px;"></div>
  1. 初始化 ECharts 实例:在 JavaScript 代码中初始化 ECharts 实例,并将其与之前准备好的 DOM 容器关联。示例代码如下:

var myChart = echarts.init(document.getElementById('chart'));
  1. 配置图表选项:根据需求配置图表的数据和样式,例如设置标题、图例、数据系列等。示例代码如下:

var option = {
    title: {
        text: '示例图表标题'
    },
    xAxis: {
        type: 'category',
        data: ['A', 'B', 'C', 'D', 'E', 'F']
    },
    yAxis: {
        type: 'value'
    },
    series: [{
        data: [10, 20, 30, 40, 50, 60],
        type: 'bar'
    }]
};
​
  1. 渲染图表:将配置好的选项应用到 ECharts 实例中,并渲染出图表。示例代码如下:

myChart.setOption(option);

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

这两招,让你轻松俘获客户心

面向政府的数字化解决方案作为睿鸿数字应用的一个分支&#xff0c;在充分借鉴政府项目中积累的丰富经验的基础上&#xff0c;积极开发更多领域通用的标准化产品。 2023年&#xff0c;睿鸿推出了一系列创新的数字应用产品&#xff0c;包括动态表单系统、统一集成门户、统一通信中…

【MySQL】如何理解索引(高频面试点)

一、前言 首先这个博客会介绍一些关于MySQL中索引的基本内容以及一些基本的语法&#xff0c;当然里面也会有些常见的面试题的解答。 二、关于索引 1、概念 索引是一种能够帮助MySQL高效的去磁盘检索数据的一种数据结构。在MySQL的Innodb存储引擎中呢&#xff0c;采用的是B树的…

如何开发通过蓝牙技术实现灯光智能调节的小程序

近年来&#xff0c;随着智能家居市场日渐兴起&#xff0c;人们对于家居生活品质的需求不断提升。在这一背景下&#xff0c;蓝牙智能调节小程序的开发能够为客户提供更便捷、智能化的LED灯光调节方案。需求方想要实现通过蓝牙开发实现LED灯光亮度和颜色的智能调节&#xff0c;同…

NOW 闹个元宵?与亚信安慧AntDB一起猜灯谜,抽奖品

关于亚信安慧AntDB数据库 AntDB数据库始于2008年&#xff0c;在运营商的核心系统上&#xff0c;服务国内24个省市自治区的数亿用户&#xff0c;具备高性能、弹性扩展、高可靠等产品特性&#xff0c;峰值每秒可处理百万笔通信核心交易&#xff0c;保障系统持续稳定运行超十年&a…

关于使用Mxnet GPU版本运行DeepAR报错解决方案

1.引言 我们经常使用GPU来训练和部署神经网络&#xff0c;因为与CPU相比&#xff0c;它提供了更多的计算能力。在本教程中&#xff0c;我们将介绍如何将GPU与MXNet GluonTS一起使用。 首先&#xff0c;确保您的机器中至少有一个Nvidia GPU&#xff0c;并正确安装了CUDA以及CUDN…

SORA技术报告快速解读——浅谈其AIGC积累的技术底蕴

SORA技术报告解读 文章目录 概要SORA整体概要关键性的技术方案解析1. 视觉类型的特征嵌入和处理-video encoder1.1 压缩视频的特征网络模型是什么&#xff1f;1.2 如何处理不同分辨率的训练和推理问题&#xff1f;2 Scaling transformers 扩散模型3. 生成解码器 小结 概要 最…

深度学习基础(三)循环神经网络(RNN)

之前的章节我们初步介绍了卷积神经网络&#xff08;CNN&#xff09;&#xff1a; 深度学习基础&#xff08;二&#xff09;卷积神经网络&#xff08;CNN&#xff09;-CSDN博客文章浏览阅读2次。卷积神经网络&#xff08;CNN&#xff09;的应用领域广泛&#xff0c;尤其在图像处…

跟着野火学FreeRTOS:第二段(事件组)

在小节里面介绍了二进制信号量&#xff0c;计数信号量&#xff0c;互斥量和递归互斥量等功能&#xff0c;其中二进制信号量和计数信号量&#xff08;也包括队列&#xff09;常用于任务和任务之间以及任务和中断之间的同步&#xff0c;她们具有以下属性&#xff1a; 当等待的事…

Sora----打破虚实之间的最后一根枷锁----这扇门的背后是人类文明的晟阳还是最后的余晖

目录 一.Sora出道即巅峰 二.为何说Sora是该领域的巨头 三.Sora无敌的背后究竟有怎样先进的处理技术 1.Spacetime Latent Patches 潜变量时空碎片&#xff0c;建构视觉语言系统 2.扩散模型与Diffusion Transformer&#xff0c;组合成强大的信息提取器 3.DiT应用于潜变量时…

每日五道java面试题之spring篇(三)

目录&#xff1a; 第一题 ApplicationContext和BeanFactory有什么区别&#xff1f;第二题 Spring中的事务是如何实现的&#xff1f;第三题 Spring中什么时候Transactional会失效&#xff1f;第四题 Spring容器启动流程是怎样的&#xff1f;第五题 Spring Boot、Spring MVC 和 S…

隐藏饿了么el-select组件的el-select-dropdown部分,只使用el-select的显示框

隐藏饿了么el-select组件的el-select-dropdown部分,只使用el-select的显示框 问题: 由于el-select组件的el-select-dropdown部分是自动插入在最外层Body上的&#xff0c;所以在当前组件的scoped中让el-select-dropdown组件display:none不会生效所以需要&#xff1a; :popper-…

ZS Associates致盛咨询是什么公司?排名怎么样?

随着商业化时代的加速演进&#xff0c;咨询公司在企业发展中的“智囊团”角色愈发突显。对于医药企业来说&#xff0c;一个优秀的咨询团队不仅可以帮助推动整体战略转型及内部改革&#xff0c;还对药品研发、营销起到优化促进作用。 那什么样的咨询企业可称之为优秀的咨询企业…

【Java EE初阶二十】http的简单理解(一)

1. 初识http HTTP 最新的版本应该是 HTTP/3.0&#xff0c;目前大规模使用的版本 HTTP/1.1&#xff1b; 下面来简单说明一下使用 HTTP 协议的场景: 1、浏览器打开网站 (基本上) 2、手机 APP 访问对应的服务器 (大概率) 前面的 TCP与UDP 和http不同&#xff0c;HTTP 的报文格式&a…

【方法】PDF如何与其它格式文件互相转换?

在工作上&#xff0c;有时候我们需要把PDF文件转换成其他格式的文件&#xff0c;比如Word、PPT、jpg等&#xff0c;或者是其他格式文件转换成PDF&#xff0c;那具体要如何操作呢&#xff1f;不清楚的小伙伴一起来看看吧&#xff01; 想把PDF文件转换成其他格式文件&#xff0c…

GoLand 相关

goland 下载依赖 go mod tidy&#xff1a;保持依赖整洁 go mod tidy 命令的作用是清理未使用的依赖&#xff0c;并更新 go.mod 以及 go.sum 文件。 go mod tidy 和 go mod vendor 两个命令是维护项目依赖不可或缺的工具。go mod tidy 确保了项目的 go.mod 文件精简且准确&…

掌握这几个技巧,才敢称为Jenkins大神!

01 Performance插件兼容性问题 自由风格项目中&#xff0c;有使用 Performance 插件收集构建产物&#xff0c;但是截至到目前最新版本&#xff08;Jenkins v2.298&#xff0c;Performance&#xff1a;v3.19&#xff09;&#xff0c;此插件和Jenkins都存在有兼容性问题&#xf…

openEuler安装MySQL客户端、openEuler安装MySQL-client、openEuler部署MySQL-client

MySQL客户端下载链接&#xff1a;https://downloads.mysql.com/archives/community/ mysql-community-client-5.7.30-1.el7.x86_64.rpm mysql-community-common-5.7.30-1.el7.x86_64.rpm mysql-community-libs-5.7.30-1.el7.x86_64.rpm 3个必选 8.0.22以上的版本是4个&…

vue3 vite 经纬度逆地址解析

在web端测试经纬度逆地址解析有2中方式&#xff0c;先准备好两个应用key 第一种&#xff0c;使用“浏览器端”应用类型 const address ref() const latitude ref() // 经度 const longitude ref() // 纬度 const ak 你的key // 浏览器端 function getAddressWeb() {// 创建…

(全注解开发)学习Spring-MVC的第三天

全注解开发 第一部分 : 1.1 消除spring-mvc.xml 这些是原来spring-mvc.xml配置文件的内容 <!--1、组件扫描, 使Controller可以被扫描到--><context:component-scan base-package"com.itheima.controller"/><!--2、非自定义的Bean, 文件上传解析器--&…

【ESP32 IDF】静态库 libxxx.a 的使用

ESP32静态库生成和使用 1. 简单描述2. 生成静态库2. 使用静态库 1. 简单描述 开发方式为 IDF5.0参考连接为 【ESP32学习之路4——生成并使用.a静态库】 2. 生成静态库 新建组件 【printhelloword】修改里面的程序函数为hello void hello(void) {printf("你好&#xff…