学习vue3第九节(新加指令 v-pre/v-once/v-memo/v-cloak )

1、v-pre

作用 :防止编译器解析某个特定的元素及其内容,即v-pre 会跳过当前元素以及其子元素的vue语法解析,并将其保持原样输出;

用于:vue 中一些没有指令和插值表达式的节点的元素,使用 v-pre 可以提高 Vue 应用的编译速度,因为它减少了编译器需要处理的内容。
v-pre 通常用于那些不需要处理的静态内容,或者在展示 Vue 代码的文档中,以确保代码不会被执行,而是作为示例显示出来。{``{ person.name }}:只会原样输出,而不是将其解析为: Andy

如下:

csharp 复制代码
<template>
  <div class="cntainer">
      <div>{{ person. name}}</div> // 输出:Andy
      <br>
      <div v-pre>{{ person.name}}</div> // 输出:{{ person.name}}
  </div>
</template>
<script setup>
import { ref, reactive, onMounted, onUnmounted } from 'vue'
const person = reactive({
  name: 'Andy',
  age: 18,
  sex: ''
})
</script>

如图:

2、v-once

作用 :被该指令作用的元素或组件,只会被编译解析一次, 如果之后有更新,将会被跳过;

注意 :v-once指令适用于那些在初始化后内容不再改变的静态组件或元素 。如果内容会随着数据的变化而改变,就不应该使用v-once,否则可能导致显示不正确的结果

csharp 复制代码
<template>
    <div>没有使用v-once:{{ person.age }}</div>
    <br>
    <div v-once>使用v-once:{{ person.age }}</div>
    <div>personAge 更新次数{{ person.age - 18}}</div>
    <br>
    <button @click="handleChangeAge">change age</button>
</template>
<script setup>
import { ref, reactive, onMounted, onUnmounted } from 'vue'
const person = reactive({
  name: 'Andy',
  age: 18,
  sex: '男'
})
const handleChangeAge = () => {
  person.age = person.age + 1
}
</script>

可以用于提高性能优化

比如:
减少不必要的重新渲染 :在Vue中,当数据发生变化时,相关的组件会重新渲染以反映最新的数据状态。然而,有些情况下组件的内容是不需要随着数据变化而改变的,这时可以用v-once指令避免不必要的重新渲染,减少渲染开销。

提高渲染效率 :重新渲染一个组件需要执行一系列的操作,包括虚拟DOM的比对和更新,以及可能的真实DOM的重新绘制。使用v-once可以避免这些操作,从而提高渲染的效率,特别是在大规模数据变化的情况下。

减少触发其他组件的重新渲染 :Vue.js中的组件之间可能存在父子组件或兄弟组件的关系。当一个组件重新渲染时,其子组件或兄弟组件也可能被重新渲染,即使它们的数据没有发生变化。使用v-once可以阻止这种不必要的重新渲染,减少了整个组件树的渲染开销。

3、v-memo指令

通过对比传入的参数,决定是否需要重新进行渲染;如果数组里的每个值都与最后一次的渲染相同,那么整个子树的更新将被跳过 ;
注意 :需要开发者传入明确的数组,避免错过必要的更新,而导致视图与数据不同步;

传入一个 any\[\] 类型的数组;

当v-memo="\[\]"传入的是空数组时候,与v-once的作用一样;
此指令对于性能优化的作用相对要很小,使用需谨慎

4、v-cloak 指令

作用:当网速或者页面渲染慢的时候,页面会出现如: {``{name}} 这种编译模板闪现的情况,不利于用户的体验,我们可以通过给对应的div添加{display:none}来取消这种影响;如下

csharp 复制代码
<template>
  <div v-cloak>{{name}}</div> 
  // 添加v-cloak指令,页面加载时,div元素会隐藏,当页面加载编译完成后,
  // v-cloak指令失效,div元素会显示
</template>
<style lang="scss" scoped>
[v-cloak]{
  display:none;
}
</style>
相关推荐
我命由我1234523 分钟前
Photoshop - Photoshop 矢量蒙版
学习·职场和发展·产品运营·求职招聘·职场发展·产品经理·photoshop
熊猫钓鱼>_>1 小时前
越顺,越空:当 AI 把学习 “优化“ 到消失
人工智能·学习·ai·llm·agent·ai编程·metaai
一条破秋裤1 小时前
02_注册设备号_从主次设备号到成对注销
学习
@codercjw2 小时前
企业实战电机和传感器选型
学习
zhangrelay3 小时前
用ROS2Lyrical实验报告册思路重做蓝桥云课ROS1实验并改进
linux·笔记·学习·ubuntu·机器人
m4Rk_3 小时前
【论文阅读】Agent 记忆机制(91):THEANINE——不删除过时记忆,让 Agent 记住事情是如何变化的
论文阅读·人工智能·学习·开源·github
我命由我123453 小时前
Photoshop - Photoshop 面板和菜单
学习·职场和发展·产品运营·求职招聘·职场发展·产品经理·photoshop
一木 之林4 小时前
RAG开发学习总结:从 LangChain 入门到检索增强生成链路的全栈实战-4/6
人工智能·学习·计算机视觉·langchain
LHR_friendship4 小时前
HCIP课程全部内容
网络·笔记·学习·hcip·华为ensp
海绵宝宝转agent4 小时前
Pico 学习笔记 Harness 设计、历史压缩、三类目录与缓存复用
笔记·学习·缓存