news 2026/5/11 5:44:58

通用构建优化(编译阶段)+ Vue 专属运行时优化 + React 专属运行时优化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
通用构建优化(编译阶段)+ Vue 专属运行时优化 + React 专属运行时优化

一、编译 / 构建阶段(两者通用,必说)

不管 Vue 还是 React,构建优化思路完全一样:减小体积、拆分代码、加速打包

  1. 代码压缩混淆

    • JS 压缩:terser 去掉注释、console、变量混淆
    • CSS 压缩:cssnano 合并、去重
    • HTML、图片压缩,WebP/AVIF 替换
  2. 路由/组件懒加载

    • Vue:() => import('@/views/xxx')
    • React:React.lazy(() => import('./xxx'))+Suspense
  3. Tree Shaking 剔除无用代码

    • 用 ESM,避免import *
    • 配置sideEffects不误删样式
    • 第三方库按需引入(lodash-es、antd 按需)
  4. 拆包优化

    • 拆分 vendor、业务代码、第三方依赖
    • 避免单个 chunk 过大导致加载慢
  5. 开启持久化缓存

    • webpack cache / vite cache 让二次打包更快
  6. 开启 Gzip/Brotli

    • 构建生成.gz,Nginx 配置启用
  7. 小图使用 SVG / Iconify,减少网络请求


二、Vue 项目运行时性能优化(专属,面试官爱听)

核心:减少不必要渲染、降低响应式开销、优化虚拟 DOM

  1. 合理使用 v-if / v-show

    • 频繁切换用 v-show
    • 只渲染一次用 v-if
  2. 避免 v-for 与 v-if 同节点使用

    • 先过滤再渲染,减少无用遍历
  3. key 必须使用唯一值,不要用 index

    • 保证 Diff 算法高效
  4. 使用 computed 缓存计算结果

    • 避免模板中重复计算
  5. 大数据列表使用vue-virtual-scroller虚拟列表

    • 只渲染可视区域,DOM 数量骤减
  6. 组件销毁时清除副作用

    • 清除定时器、事件监听、防抖节流
    • 避免内存泄漏
  7. 使用v-memo缓存子树(Vue3)

    • 依赖不变时直接跳过渲染
  8. 大数据量使用shallowRef / shallowReactive

    • 关闭深层响应式,大幅提升性能
  9. keep-alive 合理缓存页面

    • 配合 include/exclude 避免缓存过多组件
  10. 图片懒加载、懒渲染组件

    • 使用IntersectionObserver实现

三、React 项目运行时性能优化(专属,必考)

核心:阻止不必要重渲染、减少组件 diff、缓存值与函数

  1. 使用 React.memo 缓存组件

    • 防止父组件渲染导致子组件无脑重渲染
  2. 使用 useMemo 缓存计算值

    • 避免每次渲染都重新计算
  3. 使用 useCallback 缓存函数引用

    • 传给 memo 子组件时不触发重渲染
  4. key 同样不要用 index

    • 保证列表 Diff 稳定高效
  5. 虚拟列表 react-window / react-virtualized

    • 长列表必备
  6. 合理使用 useMemo 替代 JSX 内联对象/样式

    • 避免每次渲染生成新对象导致子组件重渲染
  7. 使用 Suspense + lazy 做组件懒加载

  8. 避免在 render 中创建新函数、新对象

    • 会导致引用变化,触发重复渲染
  9. 状态下放 / 组件拆分

    • 把变化频繁的状态拆成小组件,避免大面积渲染
  10. 使用 useTransition / useDeferredValue(React18)

    • 降低非紧急更新优先级,避免阻塞渲染

四、面试最漂亮的总结句(直接背)

  • 构建阶段:压缩、拆包、tree shaking、懒加载、减小体积,让包更小加载更快。
  • Vue 运行时:利用响应式优势,减少不必要渲染,用 computed、v-memo、虚拟列表优化。
  • React 运行时:用 memo/useMemo/useCallback 阻止重复渲染,拆分组件,优化 Diff 过程。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/9 19:49:35

Kubric与深度学习框架集成:PyTorch和TensorFlow数据加载完整指南

Kubric与深度学习框架集成:PyTorch和TensorFlow数据加载完整指南 【免费下载链接】kubric A data generation pipeline for creating semi-realistic synthetic multi-object videos with rich annotations such as instance segmentation masks, depth maps, and o…

作者头像 李华
网站建设 2026/4/9 19:49:33

ioquake3性能优化技巧:如何提升帧率与降低延迟

ioquake3性能优化技巧:如何提升帧率与降低延迟 【免费下载链接】ioq3 The ioquake3 community effort to continue supporting/developing ids Quake III Arena 项目地址: https://gitcode.com/gh_mirrors/io/ioq3 ioquake3作为经典的Quake III Arena开源引擎…

作者头像 李华
网站建设 2026/4/9 19:48:58

我不是在用 AI 助手,我在把自己的能力沉淀成组织资产舶

1. 什么是 Apache SeaTunnel? Apache SeaTunnel 是一个非常易于使用、高性能、支持实时流式和离线批处理的海量数据集成平台。它的目标是解决常见的数据集成问题,如数据源多样性、同步场景复杂性以及资源消耗高的问题。 核心特性 丰富的数据源支持&#…

作者头像 李华
网站建设 2026/4/9 19:48:45

如何用PoeCharm打破《流放之路》角色构建的认知瓶颈?

如何用PoeCharm打破《流放之路》角色构建的认知瓶颈? 【免费下载链接】PoeCharm Path of Building Chinese version 项目地址: https://gitcode.com/gh_mirrors/po/PoeCharm 当你第一次打开《流放之路》那浩瀚的天赋树,面对上千个节点和复杂的装备…

作者头像 李华
网站建设 2026/4/9 19:48:37

Outlook无法正常接收邮件怎么办?通过重新添加邮箱账户快速修复

🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…

作者头像 李华
网站建设 2026/4/9 19:40:11

【GraalVM企业级落地红皮书】:金融级静态镜像构建规范(含SBOM生成、符号表剥离、RPM签名、CVE自动扫描闭环)

第一章:Java GraalVM静态镜像落地的战略定位与金融级合规边界在金融核心系统向云原生与信创环境迁移的背景下,GraalVM 静态镜像(Native Image)已超越单纯性能优化工具的范畴,成为支撑高确定性、低攻击面、强可审计性的…

作者头像 李华