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 相关文章推荐
JQuery 学习笔记01 JQuery初接触
May 06 Javascript
JSON语法五大要素图文介绍
Dec 04 Javascript
jQuery实现倒计时按钮功能代码分享
Sep 03 Javascript
JS实现灵巧的下拉导航效果代码
Aug 25 Javascript
jQuery mobile 移动web(4)
Dec 20 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
Aug 29 Javascript
jQuery实现删除li节点的方法
Dec 06 Javascript
js实现tab选项卡切换功能
Jan 13 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
Apr 05 Javascript
详解基于 Nuxt 的 Vue.js 服务端渲染实践
Oct 24 Javascript
在JavaScript中使用严格模式(Strict Mode)
Jun 13 Javascript
vue开发中遇到的问题总结
Apr 07 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
php 魔术函数使用说明
2010/02/21 PHP
PHP中捕获超时事件的方法实例
2015/02/12 PHP
php的4种常见运行方式
2015/03/20 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
JavaScript中“+=”的应用
2007/02/02 Javascript
jquery 操作日期、星期、元素的追加的实现代码
2012/02/07 Javascript
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
2012/08/14 Javascript
JavaScript strike方法入门实例(给字符串加上删除线)
2014/10/17 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
js实现类似菜单风格的TAB选项卡效果代码
2015/08/28 Javascript
Javascript+CSS3实现进度条效果
2016/10/28 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
2017/03/17 Javascript
vue.js语法及常用指令
2017/10/29 Javascript
微信小程序使用form表单获取输入框数据的实例代码
2018/05/17 Javascript
vue刷新页面时去闪烁提升用户体验效果的实现方法
2018/12/10 Javascript
jQuery实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 jQuery
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
在vue中使用eslint,配合vscode的操作
2020/11/09 Javascript
python的re模块应用实例
2014/09/26 Python
详解Python中的循环语句的用法
2015/04/09 Python
用Python编写脚本使IE实现代理上网的教程
2015/04/23 Python
使用Python发送各种形式的邮件的方法汇总
2015/11/09 Python
python opencv之分水岭算法示例
2018/02/24 Python
Python List列表对象内置方法实例详解
2019/10/22 Python
Python socket实现的文件下载器功能示例
2019/11/15 Python
keras用auc做metrics以及早停实例
2020/07/02 Python
python之随机数函数的实现示例
2020/12/30 Python
纯CSS3打造动感漂亮时尚的扇形菜单
2014/03/18 HTML / CSS
Farfetch香港官网:汇集全球时尚奢侈品购物平台
2017/11/26 全球购物
什么是servlet链?
2014/07/13 面试题
酒店执行总经理岗位职责
2013/12/15 职场文书
社区反邪教工作方案
2014/06/16 职场文书
2014旅游局党组书记党建工作汇报材料
2014/11/02 职场文书
2014年护理部工作总结
2014/11/14 职场文书
《地震中的父与子》教学反思
2016/02/16 职场文书
Python源码解析之List
2021/05/21 Python