首页 > 其他分享 >Vue性能优化

Vue性能优化

时间:2023-04-18 11:34:59浏览次数:41  
标签:Vue 性能 analyzer webpack vue bundle 组件 优化

(目录)


Vue性能优化的必要性:

Vue框架通过双向数据绑定和虚拟DOM技术,帮我们处理了前端开发中最脏最累的DOM操作部分,其本身的性能已经非常强大了,但是在一个Vue项目中还是有一定的优化空间的,性能优化可以使整个网站的访问速度更快,运行更加流程,资源占用消耗更少,降低后续运营成本,所以Vue性能优化还是很有必要的。

Vue项目优化工具

webpack-bundle-analyzer

官网地址:https://github.com/webpack-contrib/webpack-bundle-analyzer

webpack-bundle-analyzer作用:

  1. 可以看到你的项目内有哪些内容
  2. 可以找出各个模块在项目中占用的大小
  3. 找到出现错误的模块
  4. 性能优化

webpack-bundle-analyzer用法:

  1. 引入

    在控制台中输入安装webpack-bundle-analyzer。

    npm run i webpack-bundle-analyzer
    
  2. 配置 vue.config.js 在vue.config.js文件中加入

    const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
    
    module.exports = defineConfig({
      configureWebpack: (config) => {
        config.plugins.push(new BundleAnalyzerPlugin());
      }
    })
    
  3. 配置package.json 在package.json中的scripts中加入

    "analyzer": "cross-env use_analyzer=true npm run build"
    

webpack-bundle-analyzer运行:

在控制台中输入npm run analyzer就可以直接运行了

webpack-bundle-analyzer使用:

在这里插入图片描述

vue项目性能优化

代码模块化

可以将常用的组件进行封装成单独的组件,例如列表、级联选择器,时间选择器、树型控件等等,具体封装的方法我在之前有去发布封装方法及思路。

除了组件以外还有我们的Css也可以通过less和sass的自定义css变量来减少重复代码,并且将定义的less和sass作为单独的全局文件在main.js中引入,大大提高了样式的复用性,还可以保证全局的样式设计统一。

懒加载

懒加载是性能优化最重要的部分主要包含两个: 路由懒加载:

 { //分析页
        path: 'analyse', 
        component: ()=>import(["@/views/Analyse"],resolve),
        meta:{
          title:'分析页',
          path:"/analyse"
        }
      },  
      { //文章
        path: 'article', 
        component: ()=>import(["@/views/Article"],resolve),
        meta:{
          title:'文章',
          path:"/article"
        }
      },
      { //团队
        path: 'team', 
        component: ()=>import(["@/views/Team"],resolve),
        meta:{
          title:'团队',
          path:"/team"
        }
      },

图片懒加载:

安装vue-lazyload

npm i vue-lazyload

使用:

 <a rel="nofollow" href="javascript:;"><img v-lazy="'/static/img/abc.jpg'"></a>

减少缓存的使用

尽量减少缓存的内容(localStorage、sessionStorage、cookie),缓存一般用于存储用户的个人信息以及登录信息,在登录时进行赋予,退出登录时进行删除,在需要使用时进行调用,除此之外的传参应该交给router或者vueX等。

这里以token为例展示用法

//添加token
localStorage.setItem('token', 'Beareradmin')
//调用token
localstorage.getItem('token')
//清除token
localStorage.removeItem('token')

防抖节流器

在频繁触发的组件内增加防抖节流器,例如监听浏览器窗口变化或者是输入框的模糊搜索这些频繁触发函数的地方加入防抖节流器,在一定时间内只允许触发一次,具体的实现方法我在之前的文章也有提过。

条件渲染

主要是针对于v-if与v-show的渲染机制,在频繁切换显示的场景使用v-show,切换比较少的情况下采用v-if,因为v-show的删除是伪删除,只是给组件增加了display:none的属性将其隐藏,在频繁使用的情况下如果使用了v-if则会反复渲染反复删除组件,而v-if则是真删除,将整个组件彻底删除,释放该内存,所以适合在使用比较少的情况下使用。

按需引入

按照需求引入组件,这里以Element为例,我只需要引入Input,Select的情况下,只需要:

import { Input,Select } from 'element-ui'
Vue.use(Input)
Vue.use(Select)

周期函数

合理使用周期函数,在组件、变量不需要使用的阶段进行销毁,或者赋值为null。

标签:Vue,性能,analyzer,webpack,vue,bundle,组件,优化
From: https://blog.51cto.com/u_15928719/6202746

相关文章

  • 关于 ModelScope 的视频 “AI 换脸” 优化方案
    前言    前面一文,初步完成了一下“AI换脸”视频处理程序。完成了视频拆帧,拆帧图片人脸融合,已经音频提取和最后的人脸融合图片的整合(也就是将图片和音频组成视频)。但是在人脸融合部分由于是单线程,处理起来非常耗时,所以这里就对那部分进行优化。 优化前情况  ......
  • elasticsearch优化思路
    一、优化方案调整并发线程数在高并发场景下,Elasticsearch服务的并发线程数需要调整到合适的值,避免线程数过多导致CPU资源浪费和内存开销增加。同时也需要避免线程数过少导致请求响应时间过长。可以通过调整Elasticsearch的线程池参数来实现。调整分片数量Elasticsearch的......
  • Vue3 回顾vue2的响应式原理
    视频vue2.x的响应式实现原理:对象类型:通过Object.defineProperty()对属性的读取、修改进行拦截(数据劫持)。数组类型:通过重写更新数组的一系列方法来实现拦截。(对数组的变更方法进行了包裹)。Object.defineProperty(data,'count',{get(){},set(){}})......
  • nginx服务在高并发场景下的优化方案及具体配置
      随着互联网的快速发展,高并发场景下的网站服务已经成为了许多企业和网站必须面对的问题。在这些场景下,如何优化nginx服务成为了一个非常重要的问题。本文将介绍一些在高并发场景下优化nginx服务的方案和具体配置。一、基础配置worker_processes该参数指定了nginx的工作进......
  • 网站速度优化的一些方法
    一、优化网站程序,改用CSS跟DIV,不用Table  虽然说DIV与CSS搭配是非常主流的编程语言,这跟它们体积小且加载速度快这两个优点密不可分。现在很多主流的网站与CMS都是采用的这个模式,目前DIV+CSS是主流的编程语言,这与其体积小加载快的优点是密不可分的。主流的网站和CMS采用的也都是......
  • vue 课堂笔记
    1、----数组合并----说明:定义两个数组arr1和arr2,然后把这两个合并放入arr3中;constarr1=[1,2,3,4,5]    constarr2=[6,7,8,9] //合并数组   constarr3=[...arr1,...arr2]//转字符串以逗号分割   constarr4=arr3.join(',')   ......
  • Vue2
    Vue的指令:用在dom元素的属性上。​{{}}---差值表达式​v-text:文本显示​v-html:解析html文本​v-on:绑定事件@​v-bind:绑定dom中的属性:​v-show---v-if:隐藏和显示dom元素​v-model:设置和获取表单元素的值---双向绑定​......
  • 测试环境治理之MYSQL索引优化篇
    作者:京东物流 李光新1治理背景测试环境这个话题对于开发和测试同学一定不陌生,大家几乎每天都会接触。但是说到对测试环境的印象,却鲜有好评:•环境不稳定,测试五分钟,排查两小时•基础建设不全,导致验证不充分,遗漏缺陷•多人共用,节点堵塞这些问题在行业内其实屡见不鲜,针对测试......
  • 界面控件DevExpress WPF甘特图组件,让项目管理拥有极佳性能!
    DevExpressWPF Gantt(甘特图)控件允许开发者在任何WPF桌面应用程序中快速集成项目计划和任务调度功能。在上文中(点击这里回顾>>)我们介绍了DevExpressWPF甘特图的性能、动态缩放等,本文将继续分享甘特图的其他功能,持续关注我们获取更多产品中文资讯哦~DevExpressWPF拥有120+个控......
  • vue往组件中传值,值在组件内如何实现修改
    Vuewarn]:Avoidmutatingapropdirectlysincethevaluewillbeoverwrittenwhenevertheparentcomponentre-renders.Instead,useadataorcomputedpropertybasedontheprop'svalue.Propbeingmutated:"type"这是Vue的一个警告提示,意思是应该避免直......