Vue内置指令v-once、v-memo和v-pre提升性能?

2024-09-05 21:20

本文主要是介绍Vue内置指令v-once、v-memo和v-pre提升性能?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

Vue的内置指令估计大家都用过不少,例如v-forv-if之类的就是最常用的内置指令,但今天给大家介绍几个平时用的比较少的内置指令。毕竟这几个Vue内置指令可用可不用,不用的时候系统正常跑,但在对的地方用了却能提升系统性能,下面将结合示例进行详细说明。

一、v-once

作用:在标签上使用v-once能使元素或者表达式只渲染一次。首次渲染之后,后面数据再发生变化时使用了v-once的地方都不会更新,因此用在数据不需要变化的地方就能进行性能优化。

v-once指令实现原理: Vue组件初始化时会标记上v-once,首次渲染会正常执行,后续再次渲染时如果看到有v-once标记则跳过二次渲染。

示例代码: 直接作用在标签上,可以是普通标签也可以是图片标签,当2S后数据变化时标签上的值不会重新渲染更新。

<template><div><span v-once>{{ message }}</span><img v-once :src="imageUrl"></img></div>
</template><script setup>
import { ref } from 'vue';let message = ref('Vue指令!');
let imageSrc = ref('/path/my/image.jpg');setTimeout(() => {message.value = '修改内容!';imageUrl.value = '/new/path/my/images.jpg';
}, 2000);</script>

注意: 作用v-once会使属性失去响应式,要确保这个地方不需要响应式更新才能使用,否则会导致数据和页面视图对不上。

二、v-pre

作用: 在标签上使用v-pre后,Vue编译器会自动跳过这个元素的编译。使用此内置指令后会被视为静态内容。

v-pre指令实现原理: Vue初次编译时如果看到有v-pre标记,那么跳过这部分的编译,直接当成原始的HTML插入到DOM中。

示例代码: 常规文本会正常编译成您好!,但使用了v-pre后会跳过编译原样输出{{ message }}

<template><div><h2>常规: {{ message }}</h2><h2 v-pre>使用v-pre后: {{ message }}</h2></div>
</template><script setup>
import { ref } from 'vue';let message = ref('您好!');
</script>

注意: 要区分v-prev-once的区别,v-once用于只渲染一次,而v-pre是直接跳过编译。

这个指令可能很多人没想到应用场景有那些,其实最常见的用途就是要在页面上显示Vue代码,如果不用v-pre就会被编译。如下所示使用v-pre场景效果。

<template><div><pre v-pre>&lt;template&gt;&lt;p&gt;{{ message }}&lt;/p&gt;&lt;/template&gt;&lt;script setup&gt;import { ref } from 'vue';const message = ref('Hello Vue!');&lt;/script&gt;</pre></div>
</template><script setup>
import { ref } from 'vue';let message = ref('您好!');
</script>

页面上展示: 代码原始显示不会被编译。

三、v-memo(支持3.2+版本)

作用: 主要用于优化组件的渲染方面性能,能控制达到某个条件才重新当堂组件,否则不重新渲染。v-memo 会缓存 DOM,只有当指定的数据发生变化时才会重新渲染,从而减少渲染次数提升性能。

v-memo 指令实现原理: Vue初始化组件时会识别是否有v-memo标记,如果有就把这部分vnode缓存起来,当数据变化时会对比依赖是否变化,变化再重新渲染。

示例代码:v-memo 绑定了arr,那么当arr的值变化才会重新渲染,否则不会重新渲染。

<template><div><ul v-memo="arr"><li v-for="(item, index) in arr" :key="index">{{ item.text }}</li></ul></div>
</template><script setup>
import { ref } from 'vue';let arr = ref([{ text: '内容1' },{ text: '内容2' },{ text: '内容3' }
]);setInterval(() => {arr.value[1].text = '修改2';
}, 2000);
</script>

注意: 用v-memo来指定触发渲染的条件,但只建议在长列表或者说复杂的渲染结构才使用。

这篇关于Vue内置指令v-once、v-memo和v-pre提升性能?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1140096

相关文章

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

html 滚动条滚动过快会留下边框线的解决方案

《html滚动条滚动过快会留下边框线的解决方案》:本文主要介绍了html滚动条滚动过快会留下边框线的解决方案,解决方法很简单,详细内容请阅读本文,希望能对你有所帮助... 滚动条滚动过快时,会留下边框线但其实大部分时候是这样的,没有多出边框线的滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

JVisualVM之Java性能监控与调优利器详解

《JVisualVM之Java性能监控与调优利器详解》本文将详细介绍JVisualVM的使用方法,并结合实际案例展示如何利用它进行性能调优,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1. JVisualVM简介2. JVisualVM的安装与启动2.1 启动JVisualVM2

Java使用MethodHandle来替代反射,提高性能问题

《Java使用MethodHandle来替代反射,提高性能问题》:本文主要介绍Java使用MethodHandle来替代反射,提高性能问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录一、认识MethodHandle1、简介2、使用方式3、与反射的区别二、示例1、基本使用2、(重要)

使用Python和Tkinter实现html标签去除工具

《使用Python和Tkinter实现html标签去除工具》本文介绍用Python和Tkinter开发的HTML标签去除工具,支持去除HTML标签、转义实体并输出纯文本,提供图形界面操作及复制功能,需... 目录html 标签去除工具功能介绍创作过程1. 技术选型2. 核心实现逻辑3. 用户体验增强如何运行