[Vue] Vue optimization

news/2024/11/29 15:21:16/文章来源:https://www.cnblogs.com/Answer1215/p/18573380

Table of content

  • Use key
  • Feeze object
  • Use composition function (Vue2)
  • Use computed
  • lazy v-model
  • v-model
  • 保持对象引用稳定
  • Use v-show instead of v-if
  • defer
  • keep-alive
  • 长列表优化
  • 打包体积优化

Use key

Normally use key when you have v-for, and this keyshould be unique and stable, won't change over time.

It's not good to use index as key. 

 

Freeze object

For some case, we don't need to convert all the object to reactive. Depends on use case, we can choose to freeze some objects, so that Vue won't convert it to reactive.

When we check an object is frozen or not, better to use Object.isExtensible(), due to a frozen object is not extensible and object by default is extensible.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible

// New objects are extensible.
const empty = {};
Object.isExtensible(empty); // true// They can be made un-extensible
Object.preventExtensions(empty);
Object.isExtensible(empty); // false// Sealed objects are by definition non-extensible.
const sealed = Object.seal({});
Object.isExtensible(sealed); // false// Frozen objects are also by definition non-extensible.
const frozen = Object.freeze({});
Object.isExtensible(frozen); // false

 

Use composition function (Vue2)

The anchored heading component we created earlier is relatively simple. It doesn’t manage any state, watch any state passed to it, and it has no lifecycle methods. Really, it’s only a function with some props.

https://v2.vuejs.org/v2/guide/render-function#Functional-Components

 

Use computed

It has cache to improve the performacne.

 

lazy v-model

When use v-modelto bind a form field, user change the field statau / value, the data will also change; then Vue will rerender; which cause some performance problem.

We can use lazyor not to use v-modelto resolve the problem. But need to be careful the data and UI might out of sync for a small time period.

v-model.lazylisten for @changeevent. v-modellisten for @inputevent.

When data change by using v-model, the CSSDOM and DOM tree will be rerender, when you have animation running and change the form field at the same time, you will feel animation become slow.

 

保持对象引用稳定

For primive value, we need to make sure the value doesn't change.

For object, need to keep reference doesn't change.

As long as data doesn't change then Vue won't rerender the view.

handleAdd1evertime calling the function will change the comments1object, so that the component will be rerender everytime

handleAdd2doesn't change the comments2reference, so that each commentobject keep the same, only newly added component will be render.

 

v-if vs v-show

v-show doesn't delete/add DOM everytime.

 

defer

Check out https://www.cnblogs.com/Answer1215/p/18573369

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

启动第三方程序并嵌入到指定容器中

通过调用API 方法实现嵌入第三方程序窗口到指定容器 Code using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Win…

centos7定时备份mysql发送邮件

前几天搞服务器备份发邮件的功能,搞了好长时间都没调通,想必有很多人和我遇到过一样的问题,今天分享出来帮大家解决燃眉之急。我不允许还有不会的童鞋出现。安装mailx(邮件服务) yum install mailx -y编辑配置文件 vim /etc/mail.rcset from=xxx@qq.com #发信人地址 set s…

RSA2048生成及使用

RSA2048 小编最近裸辞了,以前工作中涉及到的RSA加密使用方法一直没有总结。 所以把RSA2048的密钥生成和使用方法写一写免得以后忘记(而且网上好多碎片化信息没有总结成一套)。 我选择的开源代码是包含了除N,P,Q,E,D之外还需要E1,E2,C的处理方式。其实大差不差,因为按照我的…

WPF从如何动态从本地文件加载界面

在前面的文章中,我介绍过一种报告模板的实现思路。就是用的XAML本地加载。 https://www.cnblogs.com/zhaotianff/p/18254574在另外一篇文章中,介绍了XAML是如何被转换成对象的。 https://www.cnblogs.com/zhaotianff/p/18363828在这篇文章中,简单介绍了InitializeComponent函…

Python 爬虫必备杀器,xpath 解析 HTML

最近工作上写了个爬虫,要爬取国家标准网上的一些信息,这自然离不了 Python,而在解析 HTML 方面,xpath 则可当仁不让的成为兵器谱第一。 你可能之前听说或用过其它的解析方式,像 Beautiful Soup,用的人好像也不少,但 xpath 与之相比,语法更简单,解析速度更快,就像正则…

视频调色 LUT 教程 All In One

视频调色 LUT 教程 All In One Lookup tables (LUTs) 在图像处理中,查找表通常称为 LUT(或 3DLUT),并为一系列索引值中的每一个提供输出值。一种常见的 LUT,称为颜色图或调色板,用于确定特定图像将显示的颜色和强度值。在计算机断层扫描中,“窗口化”是指用于确定如何显…

探索中国风水学与AI人工智能的融合之旅

在古老的东方智慧中,风水学一直是中国传统文化的重要组成部分。它不仅是一种哲学思想,更是一种生活方式,指导人们如何与自然和谐共存,寻求生活的平衡与和谐。随着科技的发展,人工智能(AI)技术的兴起为风水学带来了新的解读和应用方式。本文将带您走进中国风水学与AI结合…

『玩转Streamlit』--可编辑表格

之前介绍过两个数据展示的组件,st.dataframe和st.table。 今天介绍的st.data_editor组件,除了展示数据的功能更加强大之外,还可以编辑数据。 1. 概要 st.data_editor组件在数据展示和编辑中都发挥着独特且重要的作用。 首先,在数据展示方面,它的优势在于:直观性:以表格形…

【验证码逆向专栏】某多多验证码逆向分析

声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术…

使用静态html绘制流程图

方案一使用svg<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Flowchart Example</title&g…

Vulnhub-Earth靶机笔记

Earth 靶机笔记 概述 这是一台 Vulnhub 的靶机,主要是 Earth 靶机地址:https://vulnhub.com/entry/the-planets-earth,755/#download 一、nmap 扫描 1、端口扫描 -sT 以 TCP 全连接扫描,--min-rate 10000 以最低 10000 速率进行扫描,-p-进行全端口扫描,-o ports 结果输出到…

hhdb数据库介绍(10-2)

集群管理 计算节点集群 集群管理主要为用户提供对计算节点集群的部署、添加、启停监控、删除等管理操作。 集群管理记录 集群管理页面显示已部署或已添加的计算节点集群信息。可以通过左上角搜索框模糊搜索计算节点集群名称进行快速查找。同时也可以通过右侧展开展开/隐藏更多按…