【VUE3】计算属性及其缓存特性
计算属性
基础示例
模板中的表达式虽然方便,但也只能用来做简单的操作。如果在模板中写太多逻辑,会让模板变得臃肿,难以维护。比如说,我们有这样一个包含嵌套数组的对象:
const author = reactive({name: 'John Doe',books: ['Vue 2 - Advanced Guide','Vue 3 - Basic Guide','Vue 4 - The Mystery']
})
我们想根据 author 是否已有一些书籍来展示不同的信息:
template
<p>Has published books:</p>
<span>{{ author.books.length > 0 ? 'Yes' : 'No' }}</span>
这里的模板看起来有些复杂。我们必须认真看好一会儿才能明白它的计算依赖于 author.books。更重要的是,如果在模板中需要不止一次这样的计算,我们可不想将这样的代码在模板里重复好多遍。
因此我们推荐使用计算属性来描述依赖响应式状态的复杂逻辑。这是重构后的示例:
vue
<script setup>
import { reactive, computed } from 'vue'const author = reactive({name: 'John Doe',books: ['Vue 2 - Advanced Guide','Vue 3 - Basic Guide','Vue 4 - The Mystery']
})// 一个计算属性 ref
const publishedBooksMessage = computed(() => {return author.books.length > 0 ? 'Yes' : 'No'
})
</script><template><p>Has published books:</p><span>{{ publishedBooksMessage }}</span>
</template>
在演练场中尝试一下
我们在这里定义了一个计算属性 publishedBooksMessage。computed() 方法期望接收一个 getter 函数,返回值为一个计算属性 ref。和其他一般的 ref 类似,你可以通过 publishedBooksMessage.value 访问计算结果。计算属性 ref 也会在模板中自动解包,因此在模板表达式中引用时无需添加 .value。
演练场
Vue 的计算属性会自动追踪响应式依赖。它会检测到 publishedBooksMessage 依赖于 author.books,所以当 author.books 改变时,任何依赖于 publishedBooksMessage 的绑定都会同时更新。反之,若author.books不变,那么计算属性将不会被触发。
计算属性缓存 vs 方法
你可能注意到我们在表达式中像这样调用一个函数也会获得和计算属性相同的结果:
template
<p>{{ calculateBooksMessage() }}</p>
js
// 组件中
function calculateBooksMessage() {return author.books.length > 0 ? 'Yes' : 'No'
}
若我们将同样的函数定义为一个方法而不是计算属性,两种方式在结果上确实是完全相同的,然而,不同之处在于计算属性值会基于其响应式依赖被缓存。一个计算属性仅会在其响应式依赖更新时才重新计算。这意味着只要 author.books 不改变,无论多少次访问 publishedBooksMessage 都会立即返回先前的计算结果,而不用重复执行 getter 函数。
这也解释了为什么下面的计算属性永远不会更新,因为 Date.now() 并不是一个响应式依赖:
js
const now = computed(() => Date.now())
演练场
相比之下,方法调用总是会在重渲染发生时再次执行函数。
为什么需要缓存呢?想象一下我们有一个非常耗性能的计算属性 list,需要循环一个巨大的数组并做许多计算逻辑,并且可能也有其他计算属性依赖于 list。没有缓存的话,我们会重复执行非常多次 list 的 getter,然而这实际上没有必要!如果你确定不需要缓存,那么也可以使用方法调用。
可写计算属性
计算属性默认是只读的。当你尝试修改一个计算属性时,你会收到一个运行时警告。只在某些特殊场景中你可能才需要用到“可写”的属性,你可以通过同时提供 getter 和 setter 来创建:
vue
<script setup>
import { ref, computed } from 'vue'const firstName = ref('John')
const lastName = ref('Doe')const fullName = computed({// getterget() {return firstName.value + ' ' + lastName.value},// setterset(newValue) {// 注意:我们这里使用的是解构赋值语法[firstName.value, lastName.value] = newValue.split(' ')}
})
</script>
现在当你再运行 fullName.value = ‘John Doe’ 时,setter 会被调用而 firstName 和 lastName 会随之更新。
最佳实践
Getter 不应有副作用
计算属性的 getter 应只做计算而没有任何其他的副作用,这一点非常重要,请务必牢记。举例来说,不要在 getter 中做异步请求或者更改 DOM!一个计算属性的声明中描述的是如何根据其他值派生一个值。因此 getter 的职责应该仅为计算和返回该值。在之后的指引中我们会讨论如何使用监听器根据其他响应式状态的变更来创建副作用。
避免直接修改计算属性值
从计算属性返回的值是派生状态。可以把它看作是一个“临时快照”,每当源状态发生变化时,就会创建一个新的快照。更改快照是没有意义的,因此计算属性的返回值应该被视为只读的,并且永远不应该被更改——应该更新它所依赖的源状态以触发新的计算。
相关文章:
4.8日
完成了通过前端查看和实现最短路径 学习时长:2小时 代码行数:行 博客数量:137篇 在昨天的基础上,我们开始通过前端输入出发地和目的地的数据来调用之前设计的计算最短路径的算法计算两地之间的最短路线包括换乘信息。最后再将信息返回到javaweb前端页面。我们就可以通过前端…...
深度解读《深度探索C++对象模型》之C++虚函数实现分析(一)
本系列深入分析编译器对于C++虚函数的底层实现,最后分析C++在多态的情况下的性能是否有受影响,多态究竟有多大的性能损失。接下来我将持续更新“深度解读《深度探索C++对象模型》”系列,敬请期待,欢迎关注!也可以关注公众号:iShare爱分享,自动获得推文和全部的文章列表。…...
php常见图片处理方法
在PHP中,处理图片通常涉及对图像进行创建、打开、修改和保存等操作。以下是一些常见的PHP图片处理方法: 创建和打开图像 使用GD库或Imagick扩展可以创建或打开图像。 * GD库:imagecreate()、imagecreatefromjpeg()、imagecreatefrompng()等…...
day07 51单片机-串口通信
51 单片机-串口通信 1 串口通信 1.1 需求描述 本案例讲解如何通过串口和PC以9600波特率,无校验位、1停止位通信。最终实现PC向单片机发送字符串,单片机回复PC。本案例中采用串口1通信。 1.2 硬件设计 1.2.1 串口工作原理 串口是将数据按照比特逐一发送的通信接口。在串…...
机器学习-10-基于paddle实现神经网络
文章目录 总结参考本门课程的目标机器学习定义第一步:数据准备第二步:定义网络第三步:训练网络第四步:测试训练好的网络 总结 本系列是机器学习课程的系列课程,主要介绍基于paddle实现神经网络。 参考 MNIST 训练_副…...
鸿蒙OpenHarmony【小型系统编写“Hello World”程序】 (基于Hi3516开发板)
编写“Hello World”程序 下方将展示如何在单板上运行第一个应用程序,其中包括新建应用程序、编译、烧写、运行等步骤,最终输出“Hello World!”。 前提条件 已参考[创建工程并获取源码],创建Hi3516开发板的源码工程。 鸿蒙开发…...
【VUE3】计算属性及其缓存特性
计算属性 基础示例 模板中的表达式虽然方便,但也只能用来做简单的操作。如果在模板中写太多逻辑,会让模板变得臃肿,难以维护。比如说,我们有这样一个包含嵌套数组的对象: const author reactive({name: John Doe,b…...
【计算机网络】从输入网址到网页显示,期间发生了什么?
【计算机网络】从输入网址到网页显示,期间发生了什么? 接下来以下图较简单的网络拓扑模型作为例子,探究探究其间发生了什么? 文章目录【计算机网络】从输入网址到网页显示,期间发生了什么?一:孤…...
【vue2】近期bug收集与整理01
🥳博 主:初映CY的前说(前端领域) 🌞个人信条:想要变成得到,中间还有做到! 🤘本文核心:记录博主在vue2中遇到过的坑,本文是博主的学习使用总结 目录 1登陆token的问…...
JSON和AJAX
JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。JSON采用完全独立于语言的文本格式,而且很多语言都提供了对json的支持(包括C,C,C#,Java,JavaScript…...
Python入门到精通【精品】第六章 - 函数
Python入门到精通【精品】第六章 - 函数 1. 如何理解函数2. 函数的定义3. 函数的使用3.1. 函数的调用3.2. 实参与形参3.3. 函数的返回3.4. 完整的函数设计3.5. 位置参数和关键参数1. 如何理解函数 当你第一次接触到“函数”这个概念的时候,你肯定会不由自主的联想到数学里面也…...
春招大盘点:找工作除了招聘网站还有哪些渠道?
又是一年毕业季,估计同学们都正在写论文、找工作两头忙,很多同学和小C“诉苦”说现在找实习的渠道太少了,招聘网站都刷完了,也没看到很合适的岗位。那找工作除了招聘网站还有什么渠道呢?其实是有的,今天就为…...
雷电4模拟器安装xposed框架(2022年)
别问我都2202年了为什么还在用雷电4安卓7。我特么哪知道Xposed的相关资料这么难找啊,只能搜到一些老旧的资料,尝试在老旧的平台上实现了。 最初的Xposed框架现在已经停止更新了,只支持到安卓8。如果要在更高版本的安卓系统上使用Xposed得看看…...
Gartner发布CNAPP市场指南 腾讯云为国内唯一入选云厂商
近日,国际研究机构Gartner发布《Market Guide for Cloud-Native Application Protection Platforms》(《云原生应用保护平台(CNAPP)市场指南》)(以下简称《市场指南》),腾讯云凭借集…...
数字藏品应用场景分析
数字藏品应用场景广泛,个人资料图片(PFP)元宇宙、艺术收藏、游戏、体育、文物、音乐等等都可以上链,以数字藏品的形式发行。国际市场中,个人资料图片占大多数,国内多以艺术收藏、文物藏品等为主。 数字藏品…...
spring boot项目:实现与数据库的连接
步骤【写在前面】定义数据库连接信息:引入数据库驱动:创建数据源:创建JdbcTemplate:编写DAO层:使用Service注解标注Service层:使用RestController注解标注Controller层:示例代码:app…...
解析vue中的process.env
一、介绍 1、process process是 nodejs 下的一个全局变量,它存储着 nodejs 中进程有关的信息。 2、process.env env 是 environment 的简称,process.env属性返回一个包含用户环境的对象。 3、dotenv Dotenv 是一个零依赖的模块,它能将环境变…...
ESP32 开启 Wi-Fi 热点与手机端 Iperf 测试 APP 来测试 ESP32 Wi-Fi AP 速率的流程
# 测试需求: ESP32 开启 WiFi AP Server 模式手机连接 ESP32 WiFi AP 热点通过手机端 Iperf 测试 APP 测试 ESP32 WiFi 热点的 Iperf 速率 测试用例: 可以基于 “esp-idf/examples/wifi/iperf” 例程进行测试。ESP32 设备下载 Iperf 例程后࿰…...
msfconsole之制作windows木马并成功获取shell
msfconsole之制作windows木马并成功获取shell 一、工具简介 msfconsole 简称 msf 是一款常用的安全测试工具,包含了常见的漏洞利用模块和生成各种木马,其提供了一个一体化的集中控制台,通过msfconsole,你可以访问和使用所…...
【小杨带你玩转C语言】(入门篇)初识C语言(下)
本章目录 每篇前言1.导语 2.目标 3.知识点 一,常见关键字 1,认识关键字 2,关键字分类 2.1,数据类型关键字 2.1.1,基本数据类型关键字 2.…...
一文快速回顾 Java 操作数据库的方式-JDBC
前言 数据库的重要性不言而喻,不管是什么系统,什么应用软件,也不管它们是 Windows 上的应用程序,还是 Web 应用程序,存储(持久化)和查询(检索)数据都是核心的功能。 大…...
92年程序员发帖晒薪资称自己很迷茫,网友:老弟你可以了
当下,是一个“向钱看,向厚赚”的社会。快节奏的生活下,家庭、工作各方面压力很容易使年轻人陷入迷茫和焦虑。 与其他行业相比,程序员的高薪让人羡慕。那么,对于那些真正达到这么多收入的人来说,他们是怎么…...
太敢说了,编程如果这么自学,培训班都得倒闭,直接省去上万元的学费
写了20多年的代码,之前做过阿里的高级架构师,在技术这条路上跌跌撞撞了很多,我今天分享一些我个人的自学方法给各位。现在在网上报个正经点的班得花几千块钱,线下就更夸张,都是万元起步,我的这些学习方法如果你能用好&…...
别急着给中国版ChatGPT唱赞歌:“追风者”无缘“星辰大海”
文心一言发布十余天后,争论仍未有止歇的迹象。 有人给出了“拉垮”的评价,相比于多轮迭代的ChatGPT,文心一言在逻辑推理、多轮对话等方面的表现不尽如人意;也有人认为给文心一言值得肯定,原因是填补了中文互联网的空白…...
异常:Error和Exception
异常机制(Exception) 什么是异常 实际工作中,遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求、你的程序要打开某个文件,这个文件可能不存在或者文件格式不对,…...
Python满屏表白代码
目录 前言 爱心界面 无限弹窗 前言 人生苦短,我用Python!又是新的一周啦,本期博主给大家带来了一个全新的作品:满屏表白代码,无限弹窗版!快快收藏起来送给她吧~ 爱心界面 def Heart(): roottk.Tk…...
Unity --- Transform类
1.一个很有意思的事实是Transform类不仅用来管理游戏物体的位置缩放旋转,还用来管理游戏物体的父物体与子物体之间的关系 当游戏物体A的trasnform类a是游戏物体B的transform类b的父类的话,游戏物体A就是游戏物体B的父物体 2.如何访问脚本当前挂载的游戏…...
ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29‘ not found
Bug描述 今天主要解决一个 Bug:libstdc.so.6: version GLIBCXX_3.4.29 not found 主要是和 libstc版本问题相关,找了很多方法,其他很多方法都是直接修改libstc.so的版本,但是直接修改这种可能被多个共享库依赖的库版本将会牵一发…...
Unity IL2CPP 游戏分析入门
一、目标 很多时候App加密本身并不难,难得是他用了一套新玩意,天生自带加密光环。例如PC时代的VB,直接ida的话,汇编代码能把你看懵。 但是要是搞明白了他的玩法,VB Decompiler一上,那妥妥的就是源码。 U…...
设置鼠标右键打开方式,添加IDEA的打开方式
一、问题描述 已下载IDEA,但是右键打开之前保存的项目文件,无法显示以IDEA方式打开。 二、解决步骤 1. 打开注册表 winR键输入regedit 2、查找路径为计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shell (我找了半天没看到Class…...
手机(Android)刷NetHunter安装指南,无需ssh执行kali命令, NetHunter支持的无线网卡列表!
一、安装NetHunter 前提:确保手机已经root,已装上magisk。如果没有root,可用尝试magisk root 后执行此文 1、下载Nethunter:Get Kali | Kali Linux 然后push 到sdcard 里, 2、打开magisk,选择刚刚下好的…...
Maven和Eclipse联合开发
Maven和Eclipse联合开发 java list 对象个数 size java List 取第一个对象.get(0) baseCrmSpecialclient.get(0).getFxid() System.out.print 换行 System.out.print(item.getCode()"\r\n"); java for循环用法 https://blog.csdn.net/rank/list/total Java for-ea…...
宝塔面板部署node+vue项目注意事项
宝塔面板部署nodevue项目注意事项 宝塔连接云服务器 如果服务器上没有安装宝塔面板,需要先安装,安装流程如下: 从宝塔官网主页进去,点击下载安装,然后点击在线安装 输入服务器IP和密码在服务器上安装宝塔面板 等待一…...
MATLAB | R2023a更新了哪些好玩的东西
R2023a来啦!!废话不多说看看新版本有啥有趣的玩意和好玩的特性叭!!把绘图放最前面叭,有图的内容看的人多。。 1 区域填充 可以使用xregion及yregion进行区域填充啦!! x -10:0.25:10; y x.^…...
MySQL对表操作
目录 CRUD 增加(Create) 查询(Retrieve) 全列查询 指定列查询 查询字段为表达式 别名 去重:DISTINCT 排序:ORDER BY 条件查询:WHERE 逻辑运算符: 修改(Update) 删除&…...
Downie 4 4.6.12 MAC上最好的一款视频下载工具
Downie for Mac 简介 Downie是Mac下一个简单的下载管理器,可以让您快速将不同的视频网站上的视频下载并保存到电脑磁盘里然后使用您的默认媒体播放器观看它们。 Downie 4 Downie 4 for Mac Downie 4 for Mac软件特点 支持许多站点 -当前支持1000多个不同的站点&…...
使用Android高性能音频--OpenSL ES和AAudio
AAudio的概念介绍: AAudio 是作为 OpenSL ES 库的轻量级原生 Android 替代项而开发。 与 OpenSL ES 相比,AAudio API 不仅较小,而且容易使用。 AAudio 是在 Android O 版本中引入的全新 Android C API。 因此 API 是专为需要低延迟的高性能音频应用而设…...
eNSP 构建基本WLAN
配置项配置参数AP组 名称:hcia-group 应用模板:域管理模板hcia-domain、VAP模板hcia-vap 域管理模板 名称:hcia-domain 国家码:cn SSID模板 名称:hcia-ssid SSID名称:hcia-wlan 安全模板 名称:h…...
记录一次C#/.NET以及VB p-code/native的逆向破解
记录一次C#/.NET以及VB p-code/native的逆向破解 玩了5份样本,2份dotnet的,2份native的和1份pcode的。 dotnet framework程序 dotnet的相对会简单,只需要使用dnspy工具打开目标程序,找到逻辑点后,点编辑函数࿰…...
IO-操作系统
用户态和内核态 现代操作系统,为了保护系统的安全,都会划分出内核空间和用户空间,或者我们经常说的内核态和用户态。简单来说,就是划分为内核态和用户态两个等级,运行在用户态的进程大都是一些应用程序,能够…...
Elasticsearch基本查询语法
先造点数据 基于elasticsearch7.10.0 POST /hotel {"mappings":{"properties":{"title":{"type":"text"},"city":{"type":"keyword"},"price":{"type":"double&q…...
百度地图入门
百度地图官网百度api 进入官网选择javascript API 里面有详细的教程, 跟着教程先登录注册一个个人开发账号 并创建一个应用获取ak 创建时js需要填白名单,如果是在本地运行填写localhost就好了 当你在控制台看到这个界面是代表创建成功了,…...
Endor Labs:2023年十大开源安全风险
近日,Endor Labs发布了一份新报告,确定了2023年的十大开源安全风险。报告显示,许多软件公司依赖于开源软件代码,但在如何衡量和处理与开源软件相关的风险和漏洞方面缺乏一致性。调查发现,在应用程序中超过80%的代码可能…...
linux 产生随机数 并遍历
1、产生随机数 varRANDOMvarRANDOM varRANDOMvar[ $var % 150 ] 2、产生不重复的随机数 $ entries($(shuf -i 0-149 -n 15)) $ echo “${entries[]}” 3、对随机数排序 $ entries($(shuf -i 0-149 -n 15 | sort -n)) $ echo “entries[]"12224549546678798393118119124140…...
OAuth2协议
OAuth2协议流程图协议角色和流程授权所需信息授权方式授权码模式(authorization code)参数简化模式密码模式客户端模式授权方式小结流程图 协议角色和流程 user-agent:浏览器或者手机App平台 资源所有者(resourc owner࿰…...
Kafka在Mac下的安装与使用
mac 安装kafka安装kafka的原因安装kafka启动Zookeeper启动Kafka创建topic查看topic生产数据消费数据关闭zookeeper关闭kafka测试安装kafka的原因 用户微服务登录后需要向广告微服务中发送用户登录的信息以获取用户画像(这个过程是异步的),故…...
Linux之sshd_config配置文件说明及实践
一、sshd_config文件说明 sshd_config 是 OpenSSH SSH 服务器守护进程配置文件,主要用于设置ssh server服务的相关参数,包括监听地址、监听端口、允许验证次数、是否允许root账户登录等等。sshd服务从/etc/ssh/sshd_config(或命令行中用-f指定…...
如何将pdf大小压缩?怎么缩小pdf的文件大小?
PDF文件常常会因为内容的多样和丰富而导致文件过大,这个时候我们可以选择将pdf压缩大小,这样即使你的电脑中有大量PDF文档也不怕占用太多内存啦,今天分享给大家的是使用pdf在线压缩工具进行pdf压缩(https://www.yasuotu.com/pdfya…...
WuThreat身份安全云-TVD每日漏洞情报-2023-03-28
漏洞名称:ABB RCCMD 硬编码密码漏洞 漏洞级别:严重 漏洞编号:CVE-2022-4126 相关涉及:RCCMD: 4.40之前230207 漏洞状态:未定义 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-07407 漏洞名称:SOFTNEXT 垃圾邮件 SQR 代码注入 漏洞级别:高危 漏洞编号:CVE-2…...
在芯片设计行业,从项目的初期到交付,不同的岗位的工程师主要负责什么?
大家都知道在芯片设计行业,项目是至关重要的一环。从项目的初期到交付,不同的岗位的工程师在项目的各环节主要负责什么?他们是怎样配合的?下面看看资深工程师怎么说。 一个项目,从初期到交付的过程是比较漫长的。我们知道最早的时候&#…...
给你一个购物车模块,你会如何设计测试用例?【测试用例设计】
测试购物车 从使用场景上,把自己想象成一个使用购物车的人,模拟流程,可以主要从两个方面进行考虑: 涉及操作:增(添加商品)删(删除商品)改(编辑、跳转商品&a…...
centos7配置pytorch和tensorflow
1、安装anaconda 1.1镜像源下载对应anaconda版本后传到服务器上 1.2进入对应文件夹 首先赋权再执行安装程序 chmod x Anaconda3-2022.10-Linux-x86_64.sh ./Anaconda3-2022.10-Linux-x86_64.sh chmod x Anaconda3-2022.10-Linux-x86_64.sh 1.3交互确认 确认许可协议&…...
libmemunreachable+malloc debug分析内存泄露
使用lsan遇到困难 一般使用lsan来查memleak效率最高,不过针对cameraserver hook到asan库时有一些其他的报错。 而且报错看起来还不太好解决: 看下如何针对camerasever使能lsan,后续研究。 使用libmemunreachablemallocdebug分析 原理 相关…...
关于Error和Exception的一些思考 小结
目录 1. ERROR 2. Exception 2.1 checked Exception 2.2 unchecked Exception 2.3 区别 3. 内存溢出 3.1 堆溢出 3.2 永久代/元空间溢出 3.3 方法栈溢出 Java中,所有的异常都有一个共同的父类:Throwable类。 Throwable类有两个重要的子类&#…...
Docker学习记录
阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。希望互相进步谢谢!! 文章目录阅读前请看一下:我是一…...
@RefreshScope 和 @Scope的使用及源码解析
结论: Scope 1、Scope代表spring Bean对象的作用域,一般分为singleton、prototype、request、session、application。其中request、session、application的缓存在GenericWebApplicationContext.postProcessBeanFactory方法中创建 2、Scope的注解proxy…...
mysql 5.7分组报错问题 Expression #1 of ORDER BY clause is not in GROUP BY clause
解决方案: select version(), sql_mode;SET sql_mode(SELECT REPLACE(sql_mode,ONLY_FULL_GROUP_BY,)); 完美的解决方案是: 1 show variables like "sql_mode"; 2 3 set sql_mode; 4 set sql_modeNO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABL…...
MariaDB InnoDB 空洞清理
1、背景 数据库占用服务器内存越来越高,除了bin-log文件之外,还发现了一些带有text或者longtext数据类型字段的表,这种表也会占用很高的服务器磁盘空间 数据库版本: 表引擎: InnoDB 数据量:清理之前1500万…...
【学习】如何确保你的软件在性能测试压力下不崩溃?
性能测试是确保软件在高负载、压力条件下仍能保持预期性能水平的关键步骤。它涉及对应用程序的响应时间、稳定性、可扩展性和资源利用率等方面的全面评估。以下是进行有效性能测试的一些关键要点: 1. 明确性能目标:在开始之前,定义清晰的性能…...
Android Jetpack学习系列——Room
关于Room: Room是Android Jetpack组件之一,旨在为Android应用程序提供一种简单、强大且易于使用的本地数据库访问解决方案。 关键特性: 1.基于SQLite封装:Room是基于SQLite数据库引擎构建的,提供了面向对象的API来与…...
CSS 伪元素和伪类的用法和区别
伪元素 伪元素则基于元素的位置来添加内容或样式 在内容元素的前后插入额外的元素或样式,但是这些元素实际上并不在文档中生成。它们只在外部显示可见,但不会在文档的源代码中找到它们,因此,称为“伪”元素。 伪元素通常用双冒…...
vue 的生命周期--图解
生命周期函数中的this指向是vm 或 组件实例对象。 常用的生命周期钩子: mounted: 发送ajax请求、启动定时器、绑定自定义事件、订阅消息等【初始化操作】。beforeDestroy: 清除定时器、解绑自定义事件、取消订阅消息等【收尾工作】。 关于销毁Vue实例 销毁后借助Vu…...