Vue性能优化的方法


Posted in Javascript onJuly 30, 2020

今天来谈一谈Vue中一些性能优化的问题,仅仅是个人使用中的一些小心得,来,今天我一句废话不多说,直接上内容好吧

1.v-if和v-show的使用,

我们都知道这两个都可以控制显隐,那我们用哪个呢,个人觉得要从两个方面入手来确定使用哪个,

1.权限的问题,只要涉及到权限相关的展示用v-if比较好

2.切换地频率,如果频繁的切换我们用v-show,不频繁的切换用v-if

其实两者各有优缺,就看你是怎么选择了,用v-if能减少页面中的DOM总数,加快渲染的速度,而且我们要清楚一个事情

v-if是'真正的'条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建.

v-if也是惰性的,如果在初始渲染时条件为假,那么什么都不做- - 直到条件第一次为真的时候才会开始渲染条件块,相比之下,v-show

就简单得多- - 不管初始条件是什么,元素总会被渲染,并且只是简单的基于css进行切换.

2.使用动画时可以用CSS启动硬件加速,

CSS animations, transforms 以及 transitions 不会自动开启GPU加速,而是由浏览器的缓慢的软件渲染引擎来执行,那我们怎样才可以切换到GPU模式呢,很多浏览器提供了某些触发 的CSS规则,可以用transform: translateZ(0); 来开启硬件加速,transform: translate3d(0, 0, 0)也可以。

3.组件懒加载,

这个很有用的,例如,当我们在一个很长的页面时,用户可能只会去看前一两屏,那剩下没被用用户观看的组件也会被加载,这样就会浪费我们的资源,我们使用组件懒加载在阻止性能浪费

4.为item设置唯一key值,

方便Vuex的内部机制在循环时能够准确的找到该条列表数据

5.减少watch的数据,在有可能的前提下,减少没有必要的state数据

因为当watch的数据比较大的时候,会大量消耗性能,所以我们可以使用事件中央总线或者Vuex进行数据的变更操作

为什么要减少没有必要的state数据,这和Vue的响应式原理有关,Vue会使用 Object.defineProperty 把这些属性全部转为 getter/setter ,并建立相应的Watcher来监控,这就造成一个问题,当我们的state特别多时,对应的Watcher也就会特别多,容易造成卡顿,这也是为什么在大型项目(状态特别多)我们会选用React而不用Vue的原因

6.图片按需加载,这个算是基础操作了吧

7.SSR(服务端渲染)

如果项目比较大,首屏无论怎么做优化,都出现闪屏或者一阵黑屏的情况。可以考虑使用SSR(服务端渲染)

8.骨架屏加载

在页面加载资源较多,可能会出现白屏和闪屏的情况,体验不好,这个时候我们可以使用骨架屏

(骨架屏就是在页面内容未加载完成的时候,先使用一些图形进行占位,待内容加载完成之后再把它替换掉)

9.打包时的优化

有时候我们打完包之后发现包会很大,那怎么解决这个问题呢,其实很简单,在项目中,我们不是引入了诸如axios,vuex,vue-router等的包吗,那我们将这些包剔除出去,

换用cdn直接引入到我们项目的根目录的html当中,

注意在 webpack 里有个 externals配置,可以忽略不需要打包的库

目前的总结的就是这些,如果以后想起来还有别的,我会再回来添加的,在下告辞,不用想我,我去用个早膳,一会就回来好吧

以上就是Vue性能优化的方法的详细内容,更多关于Vue性能优化的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
论坛里点击别人帖子下面的回复,回复标题变成“回复 24# 的帖子”
Jun 14 Javascript
js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色
May 27 Javascript
jQuery 菜单随滚条改为以定位方式(固定要浏览器顶部)
May 24 Javascript
js获取IP地址的方法小结
Jul 01 Javascript
理解javascript函数式编程中的闭包(closure)
Mar 08 Javascript
浅谈js中子页面父页面方法 变量相互调用
Aug 04 Javascript
jQuery中slidedown与slideup方法用法示例
Sep 16 Javascript
微信小程序 location API接口详解及实例代码
Oct 12 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
Nov 18 Javascript
js实现年月日表单三级联动
Apr 17 Javascript
jquery.masonry瀑布流效果
May 25 jQuery
Angular 多模块项目构建过程
Feb 13 Javascript
vue props default Array或是Object的正确写法说明
Jul 30 #Javascript
Vue props中Object和Array设置默认值操作
Jul 30 #Javascript
vue prop传值类型检验方式
Jul 30 #Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
Jul 30 #Javascript
vue setInterval 定时器失效的解决方式
Jul 30 #Javascript
vue 解决setTimeOut和setInterval函数无效报错的问题
Jul 30 #Javascript
浅谈vue 组件中的setInterval方法和window的不同
Jul 30 #Javascript
You might like
Laravel 5框架学习之表单验证
2015/04/08 PHP
如何在Mozilla Gecko 用Javascript加载XSL
2007/01/09 Javascript
JavaScript 异步调用框架 (Part 4 - 链式调用)
2009/08/04 Javascript
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
利用ajaxfileupload插件实现文件上传无刷新的具体方法
2013/06/08 Javascript
如何获取select下拉框的值(option没有及有value属性)
2013/11/08 Javascript
javascript动态添加checkbox复选框的方法
2015/12/23 Javascript
AngularJS 应用身份认证的技巧总结
2016/11/07 Javascript
Angular.JS去掉访问路径URL中的#号详解
2017/03/30 Javascript
js使用highlight.js高亮你的代码
2017/08/18 Javascript
javaScript手机号码校验工具类PhoneUtils详解
2017/12/08 Javascript
vue的token刷新处理的方法
2018/07/17 Javascript
10分钟彻底搞懂Http的强制缓存和协商缓存(小结)
2018/08/30 Javascript
jQuery实现的卷帘门滑入滑出效果【案例】
2019/02/18 jQuery
element-ui多文件上传的实现示例
2019/04/10 Javascript
JavaScript实现的滚动公告特效【基于jQuery】
2019/07/10 jQuery
Vue中点击active并第一个默认选中功能的实现
2020/02/24 Javascript
Python中的hypot()方法使用简介
2015/05/18 Python
详解Django框架中用户的登录和退出的实现
2015/07/23 Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
2017/05/08 Python
python实现百万答题自动百度搜索答案
2018/01/16 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
2018/02/02 Python
浅析python3中的os.path.dirname(__file__)的使用
2018/08/30 Python
使用Keras预训练好的模型进行目标类别预测详解
2020/06/27 Python
如何使用python记录室友的抖音在线时间
2020/06/29 Python
基于python爬取梨视频实现过程解析
2020/11/09 Python
意大利奢侈品牌在线精品店:Jole.it
2020/11/23 全球购物
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
大学生求职工作的自我评价
2014/02/13 职场文书
银行求职信
2014/05/31 职场文书
员工安全责任书范本
2014/07/24 职场文书
医院领导班子整改方案
2014/10/01 职场文书
2015年公务员个人工作总结
2015/04/24 职场文书
PostgreSQL13基于流复制搭建后备服务器的方法
2022/01/18 PostgreSQL
分享CSS盒子模型隐藏的几种方式
2022/02/28 HTML / CSS
Spring JPA 增加字段执行异常问题及解决
2022/06/10 Java/Android