Vue的学习之旅-part5

news2025/5/29 6:50:36

Vue的学习之旅-part5

  • 虚拟DOM的原理
    • 用JS模拟DOM结构
  • vue的方法、计算属性、过滤器
    • computed:{} 计算属性
    • computed计算属性的完全体
    • computed计算属性和methods方法的区别:
    • 过滤器:filters:{ 多个方法 }
  • Vuex 状态管理模式

前几篇博客: Vue的学习之旅-part1
前几篇博客: Vue的学习之旅-part2
前几篇博客: Vue的学习之旅-part3
前几篇博客: Vue的学习之旅-part4

书接上回,讲完了vue中自带的指令,那这里接着从讲讲vue的虚拟DOM原理、vue的方法、计算属性、过滤器开始吧~

虚拟DOM的原理

vue先用JS来模拟DOM结构,然后去进行一系列的计算,计算出最小的变更,然后再去操作DOM(这样就最大程度上避免一些无用功的操作)

用JS模拟DOM结构

在这里插入图片描述
通过diff算法,找出变更的地方,只修改那里,大大减少dom的操作,提升性能

vue的方法、计算属性、过滤器

computed:{} 计算属性

Vue中的计算属性是一种依赖于响应式数据的属性,它能够在依赖的数据发生变化时自动更新

计算属性在Vue中是非常有用的,它们可以用来处理一些复杂的逻辑,同时保持模板的简洁性。以下是计算属性的一些关键特点:

  • 依赖追踪:计算属性是基于它们的依赖关系进行缓存的。只有在它的相关依赖发生变化时才会重新计算。
  • 缓存机制:计算属性的值会被缓存,这意味着只要依赖的数据没有变化,多次访问计算属性会立即返回之前的计算结果,而不会再次执行计算函数。
  • 响应式更新:当计算属性所依赖的响应式数据发生变化时,计算属性会重新计算,确保数据始终保持最新状态。
  • 模板中使用:计算属性可以在模板中像普通数据属性一样使用,使得模板更加简洁和易于维护。
  • 组合使用:计算属性可以依赖于其他计算属性或数据属性,这允许创建复杂的逻辑关系,同时保持代码的模块化和可读性。

计算属性是Vue中非常强大的一个功能,它提供了一种高效的方式来处理数据变化,并且能够自动更新视图。在实际应用中,合理利用计算属性可以极大地提高应用的性能和用户体验。

注意:因为是属性,里面的方法命名时尽量不要起名为:getCount这样有get这种动词的名字,直接叫做count就行,这样才是属性

在这里插入图片描述
在这里插入图片描述

computed计算属性的完全体

computed计算属性(一般我们用的是简写)
在这里插入图片描述
这种简写等价于如下写法:
在这里插入图片描述
computed计算属性的真正样子 (完全体) 如下:
在这里插入图片描述
设置set方法后的使用:
在这里插入图片描述
在这里插入图片描述
因为computed计算属性 是 属性,所以调用其set方法就是直接赋值 调用get方法则是直接app.fullName 即可调用get方法

computed计算属性和methods方法的区别:

  • computed计算属性中的方法,在计算属性中会进行缓存,多次调用时,如果发现计算值没有发生变化,则会直接使用上次的结果,不再进行重复调用。
  • 而methods方法调用几次就会执行击此,每次重新执行,损耗较大。

计算属性(computed)和方法(methods)在Vue中都是用于执行数据操作的,但它们在使用方式、缓存机制和参数传递上有所不同。具体如下:

  1. 使用方式:计算属性可以像访问对象的属性一样直接访问,而方法需要通过调用函数的方式执行。这意味着计算属性可以作为模板中的绑定表达式直接使用,而方法则需要在模板中使用括号进行调用。
  2. 缓存机制:计算属性具有缓存机制,只有当它所依赖的数据发生变化时才会重新计算,否则它会返回之前的计算结果,这提高了性能。而方法每次调用都会执行函数,即使返回的是相同的结果,没有缓存机制。
  3. 参数传递:计算属性不支持传递参数,它只能在定义时接受固定的依赖。方法则可以接收任意数量的参数,这使得方法更加灵活,适用于需要动态参数的场景。

计算属性适合用于处理复杂的数据逻辑,尤其是当依赖的数据变化不频繁时,可以利用缓存提高性能。而方法则适合用于处理需要动态参数或没有复用需求的操作。在实际开发中,应根据具体需求选择使用计算属性还是方法。


过滤器:filters:{ 多个方法 }

一般用于处理时间格式、日期格式等地方
在这里插入图片描述
在这里插入图片描述
有些地方需要重复使用某种格式的时候,可以通过使用fiters过滤器,达到复用和简便的功能。

Vuex 状态管理模式

Vuex是专为Vue.js设计的状态管理模式,用于集中管理应用的所有组件状态

在Vue的开发中,当需要在多个组件之间共享状态时,传统的组件间传值方式可能会变得复杂且难以维护。这时,使用Vuex可以简化这个过程,因为它提供了一个中央化的存储来管理状态,从而解决了跨组件通信的问题。

以下是一些Vuex的核心概念:

  • Store:它是Vuex中用来管理状态的对象,包括stategettermutationaction四个主要属性。
  • State:这是Vuex的数据源,用于存放应用的状态数据。任何组件都可以通过$store.state.数据名的方式访问这些状态。
  • Getter:它允许对状态进行过滤和处理,然后输出结果。这通常用于从store中的state派生出一些新的计算属性。
  • Mutation:这是更改Vuex的store中的状态的唯一方法,它必须是同步的。
  • Action:用于执行异步操作,例如发送HTTP请求。在操作完成后,通常会通过提交mutation来更改状态。
  • Module:当store对象变得庞大时,可以将其分割成多个module,每个module都有自己的stategettermutationaction

总的来说,虽然Vuex提供了强大的状态管理功能,但并不是所有应用都需要使用它。对于小型或者简单的应用,直接使用Vue的组件间传值可能更加合适。但在开发大型SPA(单页应用)时,使用Vuex可以帮助你更好地组织代码,使得状态变化更加可预测和易于调试。

Vuex采用集中式存储的方法,管理应用的所有组件的状态
如果不打算开发大型单页应用,使用 Vuex 可能是繁琐冗余的。
如果应用够简单,应该使用简单的 store 模式


博主 DTcode7 带您 溺亖在知识的海洋里,嘿嘿嘿.~
🐒 个人主页—— DTcode7 的博客 🐒
《微信小程序相关博客》
《Vue相关博客》
《前端开发习惯与小技巧相关博客》
《AIGC相关博客》
《photoshop相关博客》
😚 吾辈才疏学浅,摹写之作,恐有瑕疵。望诸君海涵赐教。望轻喷,嘤嘤嘤 🙈
🕍 愿斯文对汝有所裨益,纵其简陋未及渊博,亦足以略尽绵薄之力。倘若尚存阙漏,敬请不吝斧正,俾便精进!

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

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

相关文章

python使用uiautomator2操作雷电模拟器9并遇到解决adb 连接emulator-5554 unauthorized问题

之前写过一篇文章 python使用uiautomator2操作雷电模拟器_uiautomator2 雷电模拟器-CSDN博客 上面这篇文章用的是雷电模拟器4,雷电模拟器4.0.78,android版本7.1.2。 今天有空,再使用雷电模拟器9,android版本9来测试一下 uiauto…

VulNyx - Ready

目录 信息收集 arp nmap nikto Redis未授权访问漏洞 漏洞扫描 redis-cli 写入公钥 ssh连接 get root.txt 信息收集 arp ┌─[rootparrot]─[~/vulnyx] └──╼ #arp-scan -l Interface: enp0s3, type: EN10MB, MAC: 08:00:27:16:3d:f8, IPv4: 192.168.9.102 Starti…

python输入某年某月某日判断这一天是这一年的第几天

如何使用python实现输入某年某月某日判断这一天是这一年的第几天 from datetime import datetime #引入日期类 def is_leap_year(year):"""判断是否为闰年"""return (year % 4 0 and year % 100 ! 0) or (year % 400 0)# 根据年份和月份返回当…

ASP.NET MVC使用Layui选择多图片上传

前言: 多图上传在一些特殊的需求中我们经常会遇到,其实多图上传的原理大家都有各自的见解。对于Layui多图上传和我之前所说的通过js获取文本框中的文件数组遍历提交的原理一样,只不过是Layui中的upload.render方法已经帮我们封装好了&#x…

语音识别(录音与语音播报)

语音识别(录音与语音播报) 简介 语音识别人工智能技术的应用领域非常广泛,常见的应用系统有:语音输入系统,相对于键盘输入方法,它更符合人的日常习惯,也更自然、更高效;语音控制系…

多模块项目使用springboot框架进行业务处理

项目目录 1、在Result定义返回结果 package com.edu.result;import lombok.Data;import java.io.Serializable;/*** 后端统一返回结果* param <T>*/ Data public class Result<T> implements Serializable {private Integer code; //编码&#xff1a;1成功&#xf…

大模型笔记:Prompt tuning

1 NLP模型的几个阶段 1.1 第一阶段&#xff08;在深度学习出现之前&#xff09; 通常聚焦于特征工程&#xff08;feature engineering&#xff09;利用领域知识从数据中提取好的特征 1.2 第二阶段&#xff08;在深度学习出现之后&#xff09; 特征可以从数据中习得——>…

K8s下部署grafana

1. 系统要求 最小化的软硬件要求 最小化硬件要求 磁盘空间: 1 GB内存: 750 MiB (approx 750 MB)CPU: 250m (approx 2.5 cores) 2. k8s部署grafana步骤 1) 创建名字空间 kubectl create namespace my-grafana 2) 创建yaml vim grafana.yaml yaml包含如下三个资源对象 Ob…

C++11 数据结构2 线性表的链式存储,实现,测试

线性表的链式存储 --单链表 前面我们写的线性表的顺序存储(动态数组)的案例&#xff0c;最大的缺点是插入和删除时需要移动大量元素&#xff0c;这显然需要耗费时间&#xff0c;能不能想办法解决呢&#xff1f;链表。 链表为了表示每个数据元素与其直接后继元素之间的逻辑关系…

Chatgpt掘金之旅—有爱AI商业实战篇|SEO 咨询业务|(十七)

演示站点&#xff1a; https://ai.uaai.cn 对话模块 官方论坛&#xff1a; www.jingyuai.com 京娱AI 一、AI技术创业在SEO 咨询业务有哪些机会&#xff1f; 人工智能&#xff08;AI&#xff09;技术作为当今科技创新的前沿领域&#xff0c;为创业者提供了广阔的机会和挑战。随…

JVM垃圾回收(GC)

目录 目录 1.GC 简介 1.1. 引言 1.2. 何为 GC 1.2.1. 手动 GC 1.2.2. 自动 GC 引用计数法 标记清除 2.GC入门分析 2.1.碎片整理 1)对象创建时&#xff0c;执行写入操作越来越耗时 2&#xff09;内存分配错误 2.2. 分代设想 2.3. 对象分配 对象内存分配过程 2.4. …

创建SAP替代增强的过程

发现公司的凭证增强程序里没有前人写过完全替代的增强。没有完全替代增强想要实现一些复杂一点的替代就很难实现。所以我来创建一个完全替代&#xff0c;并且把过程记录下来&#xff0c;方便以后回头查看。 因为我公司已经实施过增强了&#xff0c;下面这个从零开始实施增强的大…

编曲知识17:音高修正 节奏修正 压缩器应用 压缩数值算法

34届音高修正 节奏修正 压缩器应用 压缩数值算法独立音乐人训练营基地,七年在线教育编曲系统授课,培养了几千名独立音乐人https://app8epdhy0u9502.pc.xiaoe-tech.com/detail/l_660be2e3e4b023c02af7abbc/4?course_id=course_2XLKtQnQx9GrQHac7OPmHD9tqbv 修音 准备工作 …

软件测试过程和测试生命周期

众所周知&#xff0c;软件生命周期包括&#xff0c;需求阶段、设计阶段、设计构建阶段、测试周期阶段、最后测试、实施阶段、最后运维和维护验收。每个阶段都需要在软件开发的生命周期中从前一阶段交付。需求转化为设计&#xff0c;设计转化为开发和开发成测试&#xff0c;经过…

AD7982BRMZRL7 二进制 500kSPS 模数转换芯片 ADI

AD7982BRMZRL7是一款由Analog Devices&#xff08;亚德诺&#xff09;公司生产的18位逐次逼近型模数转换器&#xff08;ADC&#xff09;。它主要用于将模拟信号转换为数字信号&#xff0c;适用于数据采集系统、嵌入式系统、工业控制和医疗设备等领域。 AD7982BRMZRL7的主要功能…

【Unity+Python】如何通过Socket进行通信

1、Unity端创建名为UnityClient.cs脚本代码(客户端)&#xff1a; 注意&#xff1a;unity的规则中类&#xff0c;名和脚本文件名需要相同。 using System.Net.Sockets; using System.Text; using UnityEngine;public class UnityClient : MonoBehaviour {TcpClient client;Netw…

校园卡和流量卡哪个好

校园卡和流量卡哪个好 由于在某运营商工作过&#xff0c;很多人都会问我&#xff0c;校园卡和纯流量卡&#xff08;也就是物联网卡&#xff09;到底坑不坑&#xff01;&#xff01; 今天给大家解答一下&#xff0c;纯流量卡&#xff0c;也就是你打任何一家运营商客服专线都查不…

JavaScript:事件循环机制(同步、异步)(单、多线程)

事件循环机制: 多进程和多线程 1. 进程&#xff1a;程序的一次执行, 它占有一片独有的内存空间 2. 线程&#xff1a; CPU的基本调度单位, 是程序执行的一个完整流程 3. 进程与线程 * 一个进程中一般至少有一个运行的线程: 主线程 * 一个进程中也可以同时运行多个线程, 我们…

[大模型] BlueLM-7B-Chat WebDemo 部署

BlueLM-7B-Chat WebDemo 部署 模型介绍 BlueLM-7B 是由 vivo AI 全球研究院自主研发的大规模预训练语言模型&#xff0c;参数规模为 70 亿。BlueLM-7B 在 C-Eval 和 CMMLU 上均取得领先结果&#xff0c;对比同尺寸开源模型中具有较强的竞争力(截止11月1号)。本次发布共包含 7…

Golang | Leetcode Golang题解之第25题K个一组翻转链表

题目&#xff1a; 题解&#xff1a; func reverseKGroup(head *ListNode, k int) *ListNode {hair : &ListNode{Next: head}pre : hairfor head ! nil {tail : prefor i : 0; i < k; i {tail tail.Nextif tail nil {return hair.Next}}nex : tail.Nexthead, tail my…