当前位置: 首页 > news >正文

你使用这几个内置指令提升性能吗?

一、

        想必大家在开发vue项目时,内置指令肯定是缺一不可的,比如:v-for、v-if等等,今天给大家讲解几个内置指令,这几个指令用完之后是提升系统性能!

二、下面一 一详细讲解一下:

1. v-once

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

        原理:当组件初始化编译时会标记上 v-once,首次渲染会正常执行,后续再次渲染时看到有标记则不会进行渲染。

        示例:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.10/dist/vue.js"></script>
  </head>
  <body>
    <div id="app">
      <p v-once>{{msg}}</p>
      <!-- msg不会改变 -->
      <p>{{msg}}</p>
      <input type="text" v-model="msg" name="" />
    </div>
 
    <script type="text/javascript">
      let vm = new Vue({
        el: "#app",
        data: {
          msg: "Hello",
        },
      });
    </script>
  </body>
</html>
2.v-pre

        作用:告诉 Vue.js 跳过这个元素及其所有子元素的编译过程,将其视为静态内容,不会触发 Vue.js 的编译过程。

        原理:当组件初始化编译时会标记上 v-pre ,那么会直接跳过编译,直接将 HTML 插入到DOM 中。

        示例:

<template>
	<div class="djs-box">
		<div class="topBox">
			<h3>vue内置指令示例</h3>
		</div>
		<div class="dajianshi" id="dajianshi">
             <p v-pre>这里面的desc不会被替换掉{{ desc}}</p>
		</div>
	</div>
</template>

<script>
    import Vue from 'vue'
	import MyPlugin from "../plugin/myplug_demo.js";
	Vue.use(MyPlugin);
	export default {
		data() {
			return {
			  desc:'对对对!'
			}
		},
	}
</script>

最终的页面展示是 :这里面的desc不会被替换掉{{ desc}} ,而不是 :这里面的desc不会被替换掉对对对!

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

3. v-memo

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

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

        示例:

<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 来指定触发渲染的条件,但只建议在长列表或者说复杂的渲染结构才使用。

相关文章:

  • 入门Java第一步—>IDEA的下载与安装与JDK的环境配置(day01)
  • pytorch 数据处理
  • Spring Boot 动态定时任务:实现与应用详解
  • XILINX AXI总线
  • windows AWTK开发环境搭建
  • 解决 启动模拟器出现 未开启Hyper-V 的问题
  • 退出登录时如何使JWT令牌失效?
  • 学习日志8.21--防火墙NAT
  • led台灯对眼睛好不好?护眼台灯怎么选对眼睛好?收下这份攻略
  • C#过 SemaphoreSlim 实现高效的数据库并发控制和资源管理(多线程)
  • React 入门第八天:性能优化与开发者工具的使用
  • python 实现一个简单的网页爬虫程序
  • Python编程的特点
  • 一文教你编写有效提示词,了解常用提示词工具—Prompt Engineering for Gen AI
  • 解决MAC电脑SVN Android studio不能提交.so文件相关
  • python创建虚拟环境并在pycharm引用
  • 网络安全售前入门05安全服务——渗透测试服务方案
  • 【软件文档】项目总结报告编制模板(Word原件参考)
  • hdfs的慢盘检测
  • Nacos2.4.1安装
  • 三家“券商系”公募同日变更掌门人,新董事长均为公司股东方老将
  • 印度宣布即日起对所有巴基斯坦航班关闭领空
  • 神十九都带回了哪些实验样品?果蝇等生命类样品已交付科学家
  • 中央党校(国家行政学院)举行2025年春季学期第一批进修班毕业典礼
  • 华夏银行一季度营收降逾17%、净利降逾14%,公允价值变动损失逾24亿
  • 鄂湘赣“中三角”,能否走向文旅C位?