iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Vue.js中怎么优化性能
  • 503
分享到

Vue.js中怎么优化性能

2023-06-30 01:06:52 503人浏览 八月长安
摘要

这篇文章主要介绍“vue.js中怎么优化性能”,在日常操作中,相信很多人在Vue.js中怎么优化性能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue.js中怎么优化性能”的疑惑有所帮助!接下来,请跟着小编

这篇文章主要介绍“vue.js中怎么优化性能”,在日常操作中,相信很多人在Vue.js中怎么优化性能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue.js中怎么优化性能”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

01 Functional components

Vue.js中怎么优化性能

原理:****函数式组件**与普通组件相比,它没有状态(没有响应式数据),没有实例 (没有 this 上下文)。我们可以把函数式组件想像成组件里的一个函数,入参是渲染上下文(render context),返回值是渲染好的 html。正是因为函数式组件精简了很多例如响应式和钩子函数的处理,因此渲染性能会有一定提高。

适用场景:

  1. 不需要响应式数据及处理逻辑的纯展示组件

  2. 用来标记或提供基本功能的高阶组件

  3. 循环(v-for)中的元素

02 Child component splitting

Vue.js中怎么优化性能

原理:**在优化前的代码中,每次 props 传入的 number 发生变化时都会重新渲染,在渲染的过程中又会重新调用 heavy 函数进行耗性能的运算。而优化后的代码逻辑是将复杂运算封装在子组件内,由于 Vue 的更新是组件粒度的,当传入的 number 发生变化时,父组件会重新渲染,而子组件由于并不依赖 number 因此并不会重新渲染。执行计算的次数少了,性能自然也提升了。

**另:**这里其实也可以用 computed 计算属性来优化(外部依赖没有变化时不会重新计算,而且省去了额外渲染子组件的开销)

03 Local variables

Vue.js中怎么优化性能

原理:**对比前后代码可以发现区别在于:优化前的代码在进行计算时每次都直接引用 this.base,而优化后的代码将 this.base 使用局部变量 base 进行了缓存,在之后的计算中都调用局部变量进行计算。为什么会造成如此明显的性能差异呢?原因在于每次访问 this.base 时,由于 this.base 是计算属性,因此会执行一段逻辑代码查看已有的依赖项是否发生变化,如果发生变化则重新计算,没有则返回上一次计算值。这类计算逻辑的性能消耗在仅仅多调用几次时可能还不明显,但执行多了(类似示例每帧更新 300 个组件,每个组件在一次更新内又调用了多次 this.base)则会有比较大的性能差异。

04 Reuse DOM with v-show

Vue.js中怎么优化性能

原理:

  • 实现方式:v-if 是动态的向 DOM 树内添加或者删除 DOM 元素,v-show 是通过设置 DOM 元素的 display 样式属性控制显隐。

  • 编译过程:v-if 切换有一个局部编译卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件,v-show 只是简单的基于 CSS 切换。

  • 编译条件:v-if 是惰性的,如果初始条件为假,则什么也不做,只有在条件第一次变为真时才开始局部编译, v-show 是在任何条件下都被编译,然后被缓存,而且 DOM 元素保留。

  • 性能消耗:v-if 有更高的切换消耗,v-show 有更高的初始渲染消耗。

  • 使用场景:v-if 适合条件不太可能改变的情况,v-show 适合条件频繁切换的情况。

05 Keep-alive

Vue.js中怎么优化性能

Vue.js中怎么优化性能

原理:**在非优化场景下,我们每次点击按钮切换路由视图,都会重新渲染一次组件,渲染组件就会经过组件初始化,render、patch 等过程,如果组件比较复杂,或者嵌套较深,那么整个渲染耗时就会很长。而在使用 KeepAlive 后,被 KeepAlive 包裹的组件在经过第一次渲染后的 vnode 以及 DOM 都会被缓存起来,然后再下一次再次渲染该组件的时候,直接从缓存中拿到对应的 vnode 和 DOM,然后渲染,并不需要再走一次组件初始化,render 和 patch 等一系列流程,减少了 script 的执行时间,性能更好。

但是使用 KeepAlive 组件并非没有成本,因为它会占用更多的内存去做缓存,这是一种典型的空间换时间优化思想的应用。

06 Deferred features

Vue.js中怎么优化性能

其中 deferMixin 如下:

Vue.js中怎么优化性能

Vue.js中怎么优化性能

原理:**Defer 的主要思想就是把一个组件的一次渲染拆成多次,它内部维护了 displayPriority 变量,然后在通过 requestAnimationFrame 在每一帧渲染的时候自增,最多加到 count。然后使用 Defer mixin 的组件内部就可以通过 v-if="defer(xxx)" 的方式来控制在 displayPriority 增加到 xxx 的时候渲染某些区块了。

当你有渲染耗时的组件,使用 Deferred 做渐进式渲染是不错的注意,它能避免一次 render 由于 JS 执行时间过长导致渲染卡住的现象。

07 Time slicing

Vue.js中怎么优化性能

原理:**使用时间分片可以避免一次性提交的数据过多,内部 Js 执行时间过长,阻塞 UI 进程导致页面卡死。

另:**在执行耗时任务处理时,我们通常会加一个 loading 效果,但通过优化前后对比可以发现:优化前 JS 一直长时间运行,阻塞 UI 进程,因此并不会展示 loading 动画;优化后由于将耗时任务拆成多个时间片提交,单次 JS 运行时间变短了,loading 动画也有机会渲染了。

08 Non-reactive data

Vue.js中怎么优化性能

Vue.js中怎么优化性能

原理:**内部提交数据时会默认将新提交的数据定义成响应式,如果对象的子属性是对象,还会递归让子属性也变成响应式。因此当提交数据过多时,整个过程十分耗时。而优化后通过将 data 中的属性标志 configurable 手动变成 false,这样内部通过 Object.keys(obj) 获取对象属性数组会忽略 data,也就不会为 data 这个属性 defineReactive,由于 data 指向的是一个对象,这样也就会减少递归响应式的逻辑,相当于减少了这部分的性能损耗。数据量越大,这种优化的效果就会更明显。

设置 configurable 与直接使用 Object.freeze 的区别是:

**configurable: false**的用途是防止更改和删除属性标志,但是允许更改对象的值;

**Object.freeze(obj)**禁止添加/删除/更改属性。为所有现有的属性设置 configurable: false, writable: false

// configurable: falselet user = {  name: "John"};Object.defineProperty(user, "name", {  configurable: false});user.name = "Pete"; // 正常工作delete user.name; // Error// Object.freeze(obj)let user = {  name: "John"};Object.freeze(user);user.name = "Pete";console.log(user.name); // "John"复制代码

09 Virtual scrolling

Vue.js中怎么优化性能

原理:**虚拟滚动的实现方式是仅渲染视图范围内的 DOM,渲染内容少时性能自然会好很多。虚拟滚动组件也是 Guillaume Chau 写的,感兴趣的同学可以去研究它的源码实现,基本原理就是监听滚动事件,动态更新需要显示的 DOM 元素,计算出它们在视图中的位移。虚拟滚动组件也并非没有成本,因为它需要在滚动的过程中实时去计算,所以会有一定的 script 执行的成本。因此如果列表的数据量不是很大的情况,我们使用普通的滚动就足够了

到此,关于“Vue.js中怎么优化性能”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Vue.js中怎么优化性能

本文链接: https://www.lsjlt.com/news/326972.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue.js中怎么优化性能
    这篇文章主要介绍“Vue.js中怎么优化性能”,在日常操作中,相信很多人在Vue.js中怎么优化性能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue.js中怎么优化性能”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-30
  • Mysql 中怎么优化insert性能
    本篇文章为大家展示了Mysql 中怎么优化insert性能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Mysql优化之加速INSERT插入一条记录花费的时间由以下...
    99+
    2022-10-18
  • redis性能怎么优化?
    redis性能怎么优化?相信很多新手小白对redis性能优化的了解处于懵懂状态,小编给你几点建议,通过几点建议,希望你能收获更多。如下资料是关于redis性能优化的内容。一、 Redis部署结构优化建议1....
    99+
    2022-10-18
  • 怎么优化jQuery性能
    这篇文章主要介绍“怎么优化jQuery性能”,在日常操作中,相信很多人在怎么优化jQuery性能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么优化jQuery性能”的疑惑...
    99+
    2022-10-19
  • 怎么做性能优化
    本篇内容主要讲解“怎么做性能优化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么做性能优化”吧!问题分析标题中问出了两个问题,一个是有没有做过性能优化的工作,...
    99+
    2022-10-19
  • Ubuntu16.04性能怎么优化
    这篇“Ubuntu16.04性能怎么优化”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Ubuntu16.04性能怎么优化”文...
    99+
    2023-06-27
  • MySQL中怎么优化查询性能
    MySQL中怎么优化查询性能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。WHERE条件字段使用函数假设我们有如下创建表的语句mysq...
    99+
    2022-10-18
  • 怎么进行MySQL性能优化中的索引优化
    本篇文章为大家展示了怎么进行MySQL性能优化中的索引优化,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。大家都知道索引对于数据访问的性能有非常关键的作用,都知道索引...
    99+
    2022-10-19
  • go time.After性能怎么优化
    这篇文章主要介绍“go time.After性能怎么优化”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“go time.After性能怎么优化”文章能帮助大家解决问题。在项目中,基...
    99+
    2023-07-05
  • 怎么优化前端性能
    这篇文章主要讲解了“怎么优化前端性能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么优化前端性能”吧!一 引发性能问题原因引发性能问题的原因通常不是单方面...
    99+
    2022-10-19
  • java equalsignorecase性能怎么优化
    在Java中,可以使用以下方法来优化equalsIgnoreCase的性能:1. 尽量避免在循环中使用equalsIgnoreCas...
    99+
    2023-09-23
    java
  • SQL Server性能怎么优化
    本篇内容主要讲解“SQL Server性能怎么优化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL Server性能怎么优化”吧!数据库性能诊断和优化是提高数据库性能和稳定性的关键技术之一。...
    99+
    2023-06-27
  • Vue.js性能优化N个技巧(值得收藏)
    目录Functional componentsChild component splittingLocal variablesReuse DOM with v-showKeepAli...
    99+
    2022-11-12
  • Vue.js应用性能优化分析+解决方案
    目录一、介绍 二、为什么我们需要 Vue JS 性能优化? 三、Vue 性能不佳背后的主要原因 1. 生成报告2. 运行命令和npm 运行生成四、如何优化 Vue js 应用程序的性...
    99+
    2022-11-12
  • win7极致性能怎么优化
    本篇内容主要讲解“win7极致性能怎么优化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“win7极致性能怎么优化”吧!win7极致性能优化教程首先右键计算机,点击最下面的“属性” 在其中找到“高...
    99+
    2023-07-01
  • win7游戏性能怎么优化
    这篇“win7游戏性能怎么优化”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“win7游戏性能怎么优化”文章吧。win7游戏性...
    99+
    2023-07-01
  • angular怎么进行性能优化
    这篇“angular怎么进行性能优化”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“angu...
    99+
    2022-10-19
  • CSS怎么进行性能优化
    这篇文章主要介绍“CSS怎么进行性能优化”,在日常操作中,相信很多人在CSS怎么进行性能优化问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CSS怎么进行性能优化”的疑惑有所帮...
    99+
    2022-10-19
  • win10系统怎么优化性能
    要优化Windows 10系统的性能,可以采取以下措施:1. 清理磁盘空间:删除不需要的文件和程序,可以使用系统内置的磁盘清理工具或...
    99+
    2023-08-22
    Win10
  • 怎么实现PHP性能优化
    这期内容当中小编将会给大家带来有关怎么实现PHP性能优化,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。PHP语言功能虽然强大,但是也需要程序员们编写规范,创造出性能优越的代码程序。下面我们就为大家一起分享...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作