部分性能探索

ops/2024/9/24 10:01:16/
  1. 函数节流
    函数节流是指在一定时间内只执行一次函数,比如鼠标滚动事件,如果没有限制,那么每次鼠标滚动都会触发大量事件,导致浏览器卡顿甚至崩溃,而通过函数节流可以使得事件执行稳定流畅。

function throttle(fn, wait) {
var timer;
return function() {
var context = this,
args = arguments;
if (!timer) {
timer = setTimeout(function() {
fn.apply(context, args);
timer = null;
}, wait);
}
};
}

  1. 函数防抖
    函数防抖是指在一定时间内,多次触发事件只执行最后一次。比如搜索框输入事件,如果没有限制,那么每次键盘按下都会触发搜索,导致请求过多,而通过函数防抖可以避免这种情况。

function debounce(fn, delay) {
var timer = null;
return function() {
var context = this,
args = arguments;
clearTimeout(timer);
timer = setTimeout(function() {
fn.apply(context, args);
}, delay);
};
}

  1. DOM操作优化
    DOM操作是JavaScript中最耗费性能的操作之一,因此需要尽可能减少DOM操作的次数。例如,在修改多个元素的类名时,可以创建一个临时节点,然后一次性修改所有元素的类名,最后再删除临时节点。

var temp = document.createElement(‘div’);
temp.className = ‘hidden’;
document.body.appendChild(temp);

for (var i = 0; i < list.length; i++) {
list[i].className += ’ hidden’;
}

document.body.removeChild(temp);

React性能优化
React是目前最流行的前端框架之一,但是在大型应用中,组件数量庞大,每次渲染都会造成很大的性能压力。下面介绍一些常见的React性能优化方法:

  1. Pure Component
    Pure Component是一种纯组件,当其props和state没有任何变化时,就不会重新渲染。与普通组件相比,Pure Component 避免了不必要的渲染,提高了渲染效率。

import React, { PureComponent } from ‘react’;

class Button extends PureComponent {
render() {
return (

{this.props.label}

);
}
}

  1. Memo
    Memo是一种记忆组件,类似于Pure Component,但是可以自定义比较规则。当组件的props发生变化时,Memo会根据比较规则判断是否需要重新渲染。

import React, { memo } from ‘react’;

const Button = memo(({ onClick, label }) => (
{label}
), (prevProps, nextProps) => prevProps.label === nextProps.label)

  1. Virtualized List
    Virtualized List是一种虚拟列表技术,它只渲染可见区域内的列表项,而不会全部渲染。这样可以大大减少DOM节点数量,提高页面性能。

import React, { PureComponent } from ‘react’;
import {FixedSizeList} from ‘react-window’;

class List extends PureComponent {
render() {
return (

{({index, style}) => (


Item {index}

)}

);
}
}

Vue性能优化
Vue是另一种流行的前端框架,与React类似,在大型应用中也需要考虑性能问题。下面介绍一些常见的Vue性能优化方法:

  1. v-for指令
    v-for指令用于渲染列表数据,但是当列表数据过多时,会导致渲染速度变慢。为了解决这个问题,可以使用v-for的key属性,通过唯一标识符来优化列表渲染。
  • {{item.name}}
  1. 计算属性
    计算属性可以缓存数据并且在依赖项发生变化时才重新计算,避免了无意义的重复计算,提高了渲染效率。

computed: {
totalPrice() {
return this.items.reduce((total, item) => total + item.price * item.quantity, 0);
}
}

  1. 异步组件
    异步组件是一种延迟加载组件的方式,当组件被需要时再进行加载。这样可以减少首次渲染时间,提高页面加载速度。

const MyComponent = () => import(‘./MyComponent.vue’);


http://www.ppmy.cn/ops/93288.html

相关文章

同构字符串

给定两个字符串 s 和 t &#xff0c;判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t &#xff0c;那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符&#xff0c;同时不改变字符的顺序。不同字符不能映射到同一个字符上&#xff0c;相…

Django中的Q对象

文章目录 Django中的Q对象三种使用方式Q对象中常用的属性或方法 Django中的Q对象 from django.db.models import Q在Django框架中&#xff0c;Q 对象是 django.db.models.Q 的一个实例&#xff0c;它用于创建复杂的查询表达式。 Q 对象允许你构建包含多个条件的查询&#xff0c…

【网络】代理服务器

目录 正向代理 反向代理 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 正向代理 正向代理&#xff08;Forward Proxy&#xff09;是一种常见的网络代理方式&#xff0c;它位于客户端和目标 服务器之间&#xff0c;代表客户端向目标服务器发送请求。正向代理服务器接收客户…

【深度学习】卷积神经网络(CNN)简介

文章目录 1. 前言2. 什么是卷积神经网络&#xff08;CNN&#xff09;&#xff1f;2.1 卷积神经网络&#xff08;CNN&#xff09;的背景2.2 CNN 如何运作&#xff1f; 3. 人工神经元在 CNN 中的作用4. CNN 中的特征提取5. 什么是池化层&#xff1f;6. 卷积神经网络&#xff08;C…

2024年8月12日(LVS)

1、描述以及工作原理 &#xff08;1)什么是LVS linux virtural server的简称,也就是linxu虚拟机服务器,这是一个由章文嵩博士发起的开 源项目,官网是http://www.linuxvirtualserver.org,现在lvs已经是linux内核标准的一 部分,使用lvs可以达到的技术目标是:通过Linux达到负载均…

Apple 智能基础语言模型

Introducing Apple’s On-Device and Server Foundation Models technical details June 10, 2024 在2024年的全球开发者大会上&#xff0c;苹果推出了Apple Intelligence&#xff0c;这是一个深度集成到iOS 18、iPadOS 18和macOS Sequoia中的个人智能系统。Apple Intelligen…

kotlin简介

Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言&#xff0c;被称之为 Android 世界的Swift&#xff0c;由 JetBrains 设计开发并开源。 Kotlin 可以编译成Java字节码&#xff0c;也可以编译成 JavaScript&#xff0c;方便在没有 JVM 的设备上运行。 在Google I/O 2017…

在IIS上部署ASP.NET Core Web API和Blazor Wasm应用程序的完整指南

摘要 本文将引导你通过在IIS上部署ASP.NET Core Web API和Blazor WebAssembly应用程序的步骤。从环境准备到部署完成&#xff0c;我们将覆盖所有关键点。 1. 环境准备 安装IIS安装.NET Core Hosting Bundle创建ASP.NET Core Web API项目创建Blazor WebAssembly项目 2. 开发…