Vue的学习(三)

news2024/9/20 8:03:31

目录

一、for循环中key的作用

1‌.提高性能‌:

‌2.优化用户体验‌:

‌3.辅助Vue进行列表渲染‌:

4‌.方便可复用组件的使用‌:

二、methods及computed及wacth的区别

三、过滤器

1.Vue 2 过滤器简介

定义过滤器

使用过滤器

过滤器的串联

注意事项

2.代码示例

3.实现的效果如下:

四、双向数据绑定的原理

五、生命周期钩子函数

1.beforeCreate:

2.created:

3.beforeMount:

4.mouted:

5.beforUpdate:

6.Updated:

7.beforeDestroy:

8.destroyed:

9.activaed:

10.deactivated:

11.errorCapture:

六、结束语


一、for循环中key的作用

在Vue中,使用v-for指令进行列表渲染时,为每个循环的元素添加一个唯一的key属性是非常重要的。这个key的作用主要包括以下几个方面:

1‌.提高性能‌:

Vue通过key属性对每个循环生成的元素进行标识。当数据发生变化时,Vue可以更加高效地识别出新旧元素的对应关系,从而尽可能地复用已经存在的元素,减少重新渲染的开销,提高页面的性能表现‌1。

‌2.优化用户体验‌:

添加key属性可以确保列表中的元素保持稳定的身份,当数据发生变化时,Vue会尽可能地保持之前元素的状态,而不是重新创建或销毁元素,从而避免页面的闪烁或抖动现象,提供更加流畅的用户体验‌1。

‌3.辅助Vue进行列表渲染‌:

在使用v-for指令进行循环渲染时,Vue需要借助key属性来辅助判断列表中的元素是否发生了变化,以决定是否需要重新渲染列表。如果没有提供key属性,Vue会默认使用每个元素在数组中的索引作为key值,但这样会导致问题‌。

4‌.方便可复用组件的使用‌:

添加key属性可以方便地重置组件的内部状态,使组件可以被多次复用,并且每次复用时都能保持独立的状态,而不会被之前的状态所影响‌。

需要注意的是,key属性的值应该是唯一的,并且稳定不变的。最好使用每个元素在数据源中的唯一标识作为key值,避免使用索引(index)来作为key值,以免出现错误的渲染结果‌。

总之,key属性在Vue的循环渲染中起到了重要的作用,可以优化性能、提升用户体验、方便组件复用,是开发Vue应用时不可忽视的重要属性‌。

二、methods及computed及wacth的区别

 介绍:vue.js当中computed和watch都是响应式的一部分,负责根据数据的变化来处理相关的逻辑,但是他们有着非常不同的使用场景和工作机制。而methods是Vue实例中的一个选项,用于定义在Vue实例中可以调用的方法。这些方法可以在模板中通过调用来执行。

  • methods:  methods定义的方法是需要手动调用的,通过调用方法来执行相应的逻辑。用于定义组件的行为或函数,其内的代码在每次调用时都会重新执行。没有缓存机制,无论何时调用都会重新计算和执行。适用于处理事件或触发特定的逻辑场景。
  • computed:  computed是计算属性,用于基于已有相应式数据进行计算,返回一个新的值。具有缓存机制,只有当相关依赖的数据发生变化时才会重新计算。适用于需要依赖多个响应式数据进行复杂计算的场景。
  • watch:  watch是用于侦听属性变化的。你可以对某个响应式数据做实际操作或执行代码,比如发起异步请求或手动更新数据,适合需要进行一些副作用操作场景。watch适用于需要在数据变化时执行某些业务逻辑的场合。

三、过滤器

1.Vue 2 过滤器简介

在Vue 2中,过滤器(Filters)是一种非常有用的功能,它允许开发者对模板中的文本进行格式化处理。这些过滤器可以被视为一种特殊的函数,它们接收一个或多个参数(通常是模板中的文本值),并返回处理后的文本。

定义过滤器

  • 局部过滤器:这些过滤器定义在Vue实例的filters选项中。它们只在该Vue实例的模板中可用。
  • 全局过滤器:通过Vue.filter()方法定义的过滤器可以在任何Vue实例的模板中使用。这种过滤器在应用范围内是全局可访问的。

使用过滤器

在Vue模板中,你可以通过管道符(|)来应用过滤器。将过滤器应用于模板中的表达式时,表达式的值会作为参数传递给过滤器函数,并显示过滤器函数的返回值。

例如,如果你有一个显示日期的数据,并希望将其格式化为更易读的格式,你可以定义一个日期格式化过滤器,并在模板中通过管道符将其应用于日期数据。

过滤器的串联

Vue 2的过滤器支持串联使用,即一个过滤器的输出可以作为下一个过滤器的输入。这使得你能够轻松地将多个过滤器组合起来,实现复杂的文本处理逻辑。

注意事项

  • 过滤器主要用于文本格式化,不应该用于处理复杂的逻辑或改变数据的状态。
  • 在Vue 3中,官方移除了对过滤器的支持,转而推荐使用计算属性(Computed Properties)或方法(Methods)来实现类似的功能。这是因为过滤器虽然简单,但在大型项目中容易被滥用,导致逻辑难以追踪和维护。

2.代码示例

这里我们使用了一个过滤器,来将input框中的小写字符通过过滤器变成大写字母,在div中展示。

<!DOCTYPE html>
<html lang="zh-CN">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./../day_01/js/vue.js"></script>
</head>

<body>
    <div id="app">
        <input type="text" v-model="msg">
        <div>{{msg | toUpper}}</div>
    </div>
    <script>
        //全局过滤器
        //Vue.filter("过滤器名称",回调函数)
        //注意:全局过滤器必须写在new Vue() 之前
        Vue.filter("toUpper", function (val) {
            console.log("val", val);
            return val.toUpperCase();
        })
        const vm = new Vue({
            el: "#app",
            data: {
                msg: ''
            }
        })
    </script>
</body>

</html>

3.实现的效果如下:

四、双向数据绑定的原理

  1. 当数据模型中的属性值发生变化时,Vue会通过getter和setter来获取和更新数据。

  2. 当模板中的绑定表达式发生变化时,Vue会通过指令或插值表达式将变化的值传递给对应的数据模型。

  3. Vue内部会通过使用Object.defineProperty()方法对数据模型的属性进行劫持,实现数据的响应式。

  4. 当数据模型的属性值发生变化时,Vue会通过观察者模式通知订阅了该属性的指令和组件更新视图。

  5. 更新视图时,Vue会使用Virtual DOM(虚拟DOM)对比新旧DOM树的差异,然后只更新差异部分的真实DOM,提高渲染效率。

  6. 当用户在视图中进行交互操作时,例如输入框输入文字,Vue会监听到事件并通过事件处理函数更新对应的数据模型。

五、生命周期钩子函数

1.beforeCreate:

创建前  无法通过 vm 实例 访问 data中的数据  以及 methods中的方法.

2.created:

创建后  可以通过 vm 实例 访问 data中的数据  以及 methods中的方法

3.beforeMount:

挂载前  页面呈现的是未经Vue编译的DOM结构;所有对DOM的操作,最终都不奏效

4.mouted:

vue 完成模板的解析并把初始的真实DOM元素放入页面后(挂载完毕)调用, 此时页面呈现的都是经过Vue编译的DOM。对DOM的操作均有效。

至此初始化过程结束,一般再次进行:开启定时器、发送网络请求、订阅消息、绑定自定义事件等初始化操作。

5.beforUpdate:

更新前  数据是新的  页面是旧的   页面与数据不同步

6.Updated:

更新后  数据是新的  页面也是新的   页面与数据同步

7.beforeDestroy:

销毁前  Vue中的 data 及 methods 及 指令 目前都处于可用状态  一般再此阶段取消定时器,取消订阅的消息,解绑自定义的事件等收尾工作.

8.destroyed:

销毁后,此时组件已经被完全销毁,实例中的所有数据,方法,属性,过滤器等都不可以再次使用了。

9.activaed:

组件激活时,和上面的beforDestroy和destroyed用法差不多,但是如果我们需要一个实例,在销毁后再次出现的话,用beforeDestroy和destroyed的话,就太浪费性能了。实例被激活时使用,用于重复激活一个实例的时候。

10.deactivated:

组件未激活时。

11.errorCapture:

错误调用,当捕获一个来自后代组件错误时被调用。

六、结束语

在结束这篇博文之际,我想借此机会再次感谢每一位耐心阅读至此的你。无论是文字间的共鸣,还是观点上的碰撞,都是对我莫大的鼓励与支持。我们共同探索了知识的海洋,分享了思考的火花,或许在某个不经意的瞬间,这些交流已经悄然在你我心中种下了新的灵感与启迪。

在这个信息爆炸的时代,能够静下心来,深入某一领域或话题,本身就是一种难能可贵的品质。希望这篇博文不仅为你提供了一些有价值的信息和见解,更能激发你对世界的好奇心与探索欲。记住,学习是一场没有终点的旅行,让我们携手并进,在未知的旅途中不断发现、学习、成长。

未来,我将继续带着这份热爱与责任,笔耕不辍,努力为大家带来更多有深度、有温度的内容。期待在下一篇文章中,再次与你相遇,共同开启新的知识探索之旅。

最后,如果你喜欢这篇文章,不妨点个赞、分享给你的朋友,或者留下你的宝贵评论,你的反馈是我前进的动力。再次感谢,愿你的每一天都充满阳光与希望,待下一次与各位宝子再次进行交流,我们下篇文章见!

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

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

相关文章

八、适配器模式

适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许不兼容的接口之间进行合作。适配器模式通过创建一个适配器类来转换一个接口的接口&#xff0c;使得原本由于接口不兼容无法一起工作的类可以一起工作。 主要组成部分&#xff1a; 目标…

CUDA-中值滤波算法

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 实现原理 中值滤波是一种常用的图像处理方法&#xff0c;特别适用于去除图像中的脉冲噪声&#xff08;如椒盐噪声&#xff09;。…

基于IOT的供电房监控系统(实物)

aliyun_mqtt.cpp 本次设计利用ESP8266作为系统主控&#xff0c;利用超声波检测门的状态&#xff0c;利用DHT11检测环境温湿度、烟雾传感器检测空气中的气体浓度&#xff0c;利用火焰报警器模块检测火焰状态&#xff0c;使用OLED进行可视化显示&#xff0c;系统显示传感器数据&a…

同相放大器电路设计

1 简介 同相放大电路输入阻抗为运放的极高输入阻抗&#xff08;GΩ级&#xff09;&#xff0c;因此可处理高阻抗输入源信号。同相放大器的共模电压等于输入信号。 2 设计目标 2.1 输入 2.2 输出 2.3 频率 2.4 电源 3 电路设计 根据设计目标&#xff0c;最终设计的电路结构…

python-确定进制

题目描述 6 942 对于十进制来说是错误的&#xff0c;但是对于 13 进制来说是正确的。即 6(13)​ 9(13)​42(13)​&#xff0c;而 42(13)​4 13^12 13^054(10)​。 你的任务是写一段程序读入三个整数 p,q 和 r&#xff0c;然后确定一个进制 B(2≤B≤16) 使得 p qr 。如果 B 有…

Vue3: 使用ref自动补齐.value

目录 一.老版本&#xff08;已经弃用TypeScript Vue Plugin (Volar)&#xff09; 二.新版本&#xff08;Vue - Official&#xff09; 三.勾选后重启VScode 四.效果 VScode中搜索Vue - Official插件 一.老版本&#xff08;已经弃用TypeScript Vue Plugin (Volar)&#xff0…

学习之git的远程仓库操作的常用命令

1 git remote -v 查看当前所有远程地址别名 2 git remote add 别名 远程地址 3 git push 别名 分支&#xff08;本地分支名称&#xff09; 推送本地分支到远程仓库 4 git pull 远程库别名 远程分支别名 拉取远程库分支&#xff08;更新代码&#xff09; 5 git clone 远程库地址…

【时间盒子】-【6.任务页面】在同一个页面新建、编辑任务

Tips: Column组件的使用&#xff1b; color.json资源文件的使用。 一、页面布局 页面分为三个部分&#xff0c;从上往下分别是&#xff1a;标题菜单栏、时间选择器和任务列表。每个部分都可以设计为独立的组件&#xff0c;后续文章分别介绍。 二、新建页面 右击pages目录&…

Vue:指令

目录 指令概念内容渲染指令**{{ }}****v-text****v-html** 属性绑定指令 v-bind绑定属性**绑定class****绑定style**动态绑定属性**绑定对象** 事件绑定指令 v-onv-on 基础event**$event** 双向绑定指令 v-modelv-model 基础v-model 值绑定**v-model 指令的修饰符** 条件渲染指…

解锁全球机遇:澳大利亚服务器租用市场的独特魅力

在浩瀚的全球数字版图中&#xff0c;澳大利亚以其独特的地理位置、丰富的资源禀赋、以及日益增长的数字经济活力&#xff0c;成为了众多互联网企业竞相布局的重要市场。特别是当谈及服务器租用这一关键环节时&#xff0c;澳大利亚以其稳定的网络环境、先进的基础设施和开放的市…

使用原生HTML的drag实现元素的拖拽

HTML 拖放&#xff08;Drag and Drop&#xff09;接口使应用程序能够在浏览器中使用拖放功能。例如&#xff0c;用户可使用鼠标选择可拖拽&#xff08;draggable&#xff09;元素&#xff0c;将元素拖拽到可放置&#xff08;droppable&#xff09;元素&#xff0c;并释放鼠标按…

GPIO 简介(STM32F407)

一、GPIO简介 什么是GPIO GPIO即通用输入输出端口&#xff0c;全称General Purpose Input Output&#xff0c;是控制或者采集外部器件的信息的外设&#xff0c;即负责输入输出。 它按组分配存在&#xff0c;每组最多16个IO口&#xff0c;组数视芯片而定。比如STM32F407ZGT6是…

今年中秋节买什么东西划算?精选五款好物清单合集推荐!

谈及中秋佳节选购什么好物&#xff0c;你可真是找对人了&#xff01;作为一位专注于节日氛围与生活美学的博主&#xff0c;对于哪些中秋好物能为您的佳节增添温馨与喜悦&#xff0c;我可是了如指掌。恰逢中秋佳节临近&#xff0c;各大商家纷纷推出精彩纷呈的优惠活动&#xff0…

AI产品经理必备技能:技术与能力升级图谱

目 录 CONTENTS 前言 第1章 AI产品经理——不是简单的“当产品经理遇上“AI” 001 1.1 三大浪潮看AI技术发展 002 1.2 AI产品和AI产品经理 003 1.3 成为AI产品经理三步走 011 1.3.1 第一步&#xff1a;找到自己的糖山 011 1.3.2 第二步&#xff1a;找到自己的比较优势 …

联合谱低秩先验和深度空间先验的高光谱图像无监督去噪

高光谱图像&#xff08;Hyperspectral Image, HSI&#xff09;具有丰富的光谱信息&#xff0c;广泛应用于遥感、环境监测和医学成像等领域。然而&#xff0c;高光谱图像常常受到噪声的干扰&#xff0c;这会影响后续的数据分析和应用。因此&#xff0c;设计有效的去噪算法是高光…

计算机毕业设计选题推荐-线上花店系统-鲜花配送系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

玩归龙潮手机配置低、卡顿发烫、内存不足 GameViewer远程助你手机畅玩归龙潮

国潮RPG动作游戏《归龙潮》终于在9月13日迎来公测&#xff01;要是你担心自己的手机配置低&#xff0c;会出现卡顿发烫、内存不足等问题&#xff0c;可以通过网易GameViewer远程助你手机远控电脑畅玩归龙潮。 GameViewer远程作为专为游戏玩家打造的远程控制软件&#xff0c;用它…

价值流:从理论框架到实践落地的系统化指南

价值流如何从理论转化为实践中的企业增长引擎 随着全球化和数字化进程的加快&#xff0c;企业面临的竞争压力日益加剧。如何在竞争激烈的市场中立足并实现持续增长&#xff0c;已经成为每一个企业管理者需要面对的重要议题。作为一种强调客户价值创造的工具&#xff0c;《价值…

2024年8月国产数据库大事记-墨天轮

本文为墨天轮社区整理的2024年8月国产数据库大事件和重要产品发布消息。 目录 2024年8月国产数据库大事记 TOP102024年8月国产数据库大事记&#xff08;时间线&#xff09;产品/版本发布兼容认证代表厂商大事记厂商活动 【VLDB2024分享和相关论文】其它活动相关资料 厂商财报…

【STM32】OLED

OLED显示原理 OLED使用的是I2C协议&#xff0c;使用ssd1306芯片对所有灯进行控制&#xff0c;如果一个灯需要一个引脚的话&#xff0c;屏幕分为8页&#xff0c;每页有128列&#xff0c;8行 . 共有128* 88个灯 这样引脚是算不过来的&#xff0c;所以我们使用了ssd1306芯片&…