iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue2.x 项目性能优化之代码优化的实现
  • 466
分享到

Vue2.x 项目性能优化之代码优化的实现

2024-04-02 19:04:59 466人浏览 薄情痞子
摘要

目录1 v-if 和 v-show 的使用 2 computed 和 watch 区分使用 3 v-for 遍历必须为 item 添加 key,且避免同时使用 v-if 4 纯显示长

众所周知,Vue项目采用了数据双向绑定和虚拟DOM基础,在数据驱动代替DOM频繁渲染已经算是非常高效了,对开发者而言已经非常优化了,那为什么还会有Vue性能优化这一说呢?

因为目前Vue 2.x使用了webpack等第三方打包构建工具,并且支持其他第三方的插件,我们在项目中使用这些工具时可能不同的操作在运行或打包效率上会有不同的效果,下面就来详细说明优化的方向。

1 v-if 和 v-show 的使用

  • v-if 为false的时候不会渲染DOM到视图,为true的时候才会渲染到视图;
  • v-show 不管初始条件是什么,元素总是会渲染到视图,只是简单地基于 CSS 的 display 属性进行切换。

最佳实践:频繁切换显示隐藏的元素采用v-show,很少改变使用v-if

2 computed 和 watch 区分使用

  • computed: 是计算属性,依赖其它属性值,并且 computed 的值有缓存,只有它依赖的属性值发生改变,下一次获取 computed 的值时才会重新计算 computed的值;
  • watch: 更多的是「观察」的作用,类似于某些数据的监听回调 ,每当监听的数据变化时都会执行回调进行后续操作;

最佳实践:当我们需要进行数值计算,并且依赖于其它数据时,应该使用 computed,因为可以利用 computed 的缓存特性,避免每次获取值时,都要重新计算;当我们需要在数据变化时执行异步或开销较大的操作时,应该使用 watch,使用 watch 选项允许我们执行异步操作 ( 访问一个 api ),限制我们执行该操作的频率,并在我们得到最终结果前,设置中间状态。这些都是计算属性无法做到的。

3 v-for 遍历必须为 item 添加 key,且避免同时使用 v-if

现在不加key一般会报错的,添加key可以方便 Vue内部机制精准找到该条列表数据。当更新时,新的状态值和旧的状态值对比,较快地定位到 diff

v-for比 v-if 优先级高,如果每一次都需要遍历整个数组,将会影响速度,尤其是当之需要渲染很小一部分的时候,必要情况下应该替换成 computed属性。


<ul>
 <li v-for="user in adminUsers" :key="user.id">
  {{ user.name }}
 </li>
</ul>

<script>
export default {
 data () {
 return { users: [] }
 },
 computed: {
 adminUsers: function(){
 return this.users.filter(()=>user.isAdmin)
 }
 }
}
</script>

4 纯显示长列表性能优化

对于只用来展示用的数据,不需要做vue做数据劫持,只需要冻结这个对象即可:


export default {
 data () {
 return {
 users: []
 }
 },
 created () {
 axiOS.get('/api/users').then((res)=>{
 this.users = Object.freeze(res.data.users)
 })
 }
}
 

5 事件的销毁

Vue 组件销毁时,会自动清理它与其它实例的连接,解绑它的全部指令及事件监听器,但是仅限于组件本身的事件。 如果在 js 内使用 addEventListene 等方式是不会自动销毁的,我们需要在组件销毁时手动移除这些事件的监听,以免造成内存泄露,如:


created() {
 addEventListener('click', this.click, false)
},
beforeDestroy() {
 removeEventListener('click', this.click, false)
}
 

6 图片资源懒加载

使用vue-lazyload插件:

安装


npm install vue-lazyload --save-dev

man.js 引用


import VueLazyload from 'vue-lazyload'
Vue.use(VueLazyload)
// 或自定义
Vue.use(VueLazyload, {
 preLoad: 1.3,
 error: 'dist/error.png',
 loading: 'dist/loading.gif',
 attempt: 1
})

修改img标签


<img v-lazy="/static/img/1.png">

7 路由懒加载

Vue 是单页面应用,可能会有很多的路由引入 ,这样使用 WEBpcak 打包后的文件很大,当进入首页时,加载的资源过多,页面会出现白屏的情况,不利于用户体验。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应的组件,这样就更加高效了。这样会大大提高首屏显示的速度,但是可能其他的页面的速度就会降下来。


const Foo = () => import('./Foo.vue')
const router = new VueRouter({
 routes: [
 { path: '/foo', component: Foo }
 ]
})

8 第三方插件按需引入

我们在使用第三方库的时候,最好是按需引入而不是全局引入,因为第三方库的插件比较多全部引入会打包比较慢,如Element UI、Ant Design of Vue等UI库:

按需引入


import Vue from 'vue';
import { DatePicker } from 'ant-design-vue';
Vue.use(DatePicker);
 

全局引入


import Antd from 'ant-design-vue';
Vue.use(Antd);

9 优化无限列表性能

如果你是在渲染带无限滚动加载的列表时,那么需要采用 窗口化 的技术来优化性能,只需要渲染少部分区域的内容,减少重新渲染组件和创建 dom 节点的时间。 你可以参考以下开源项目 vue-virtual-scroll-list 和 vue-virtual-scroller来优化这种无限列表的场景的。
大家自己去GitHub看使用说明吧。

10 服务端渲染 SSR or 预渲染

一般单页应用是在浏览器端完成页面渲染的,数据是发请求从后台拿过来的;而服务器端渲染SSR是页面元素的结构(html)是在服务器端就已经构建好的,直接把整个页面返回到客户端的。
那SSR有什么优缺点呢:

  • 更好的SEO:网络爬虫可以直接爬取页面信息利于被搜索引擎收录,而ajax异步请求的内容不会被收录,所以通过SSR渲染的完整的页面信息更利于SEO;
  • 支持的钩子函数只支持 beforCreate 和 created,服务器需要处于node Server环境;
  • 需要更高的服务器配置:因为它包含了数据处理和页面渲染,所以服务器开支变大

如果对首屏加载速度要求比较高或对SEO有要求的可以采用SSR渲染。

PS:优化只是建议,需要考虑是否适合自己的项目,包括优化难度、影响范围、适用场景、是否影响别的模块、优化效果是否明显等等。适合自己的才是最好的!

到此这篇关于Vue2.x 项目性能优化之代码优化的实现的文章就介绍到这了,更多相关Vue2.x 代码优化内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vue2.x 项目性能优化之代码优化的实现

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

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

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

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

下载Word文档
猜你喜欢
  • Vue2.x 项目性能优化之代码优化的实现
    目录1 v-if 和 v-show 的使用 2 computed 和 watch 区分使用 3 v-for 遍历必须为 item 添加 key,且避免同时使用 v-if 4 纯显示长...
    99+
    2024-04-02
  • vue2.x 从vue.config.js配置到项目优化
    目录前言vue.config.js配置选项打包优化,减小包的大小图片视频压缩js代码压缩cdn加速首屏加载时间优化路由懒加载优化gzip压缩优化参考文献vue.config.js 是...
    99+
    2024-04-02
  • java性能优化之代码缓存优化
    目录JIT编译器版本默认情况JVM如何选择编译器?如何判断当前环境jvm使用的编译器?代码缓存代码缓存占满发生在什么情况?代码缓存默认大小如何确定正好的代码缓存?如何监控代码缓存?J...
    99+
    2024-04-02
  • Python代码性能优化
    Python性能优化的一般步骤: 步骤1:找到性能 瓶颈 步骤2:优化性能 瓶颈 步骤3:goto 『步骤1』 找出瓶颈 不要相信直觉,使用专业工具 使用专业工具: profile / cprofil...
    99+
    2023-01-31
    性能 代码 Python
  • Golang函数性能优化之代码profiling实践
    通过代码 profiling,我们可以分析函数执行时间和资源使用情况,找出性能瓶颈并进行优化。使用 runtime/pprof 工具生成 profiling 报告。使用 pprof 工具...
    99+
    2024-04-17
    golang函数 golang
  • 性能优化 = 改改代码?
    如果第二次看到我的文章,欢迎「文末」扫码关注我哟~ 每周五11:45 按时送达。 当然了,也会时不时加个餐~我的第「124」篇原创敬上大家好,我是Z哥。好久没写技术文章了,最近正好有进行一些思考,顺手写出来分享给大家。上...
    99+
    2023-06-05
  • Java性能优化之数据结构实例代码
    —举例(学生排课)—正常思路的处理方法和优化过后的处理方法:比如说给学生排课。学生和课程是一个多对多的关系。按照正常的逻辑 应该有一个关联表来维护 两者之间的关系。现在,添加一个约束条件用于校验。如:张三上学期学过的课程,在排课的时候不应该...
    99+
    2023-05-30
  • Android 分析实现性能优化之启动速度优化
    目录启动方式冷启动(启动优化目标)热启动温启动启动流程中可优化的环节检测工具启动时间检测Logcat Displayedadb 命令统计CPU profileAPI level &g...
    99+
    2024-04-02
  • PHP代码性能优化的技巧
    本篇内容主要讲解“PHP代码性能优化的技巧”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP代码性能优化的技巧”吧!PHP代码性能优化1. 不要随便就复制变量有时候为了使 PHP 代码更加整洁...
    99+
    2023-06-17
  • 如何优化Python代码的性能
    如何优化Python代码的性能Python作为一种高级编程语言,其易学易用的特点使其成为了很多开发者的首选。然而,由于Python是一种解释型语言,其执行速度相对较慢,特别是在处理大数据集或者复杂算法时。因此,对于需要高性能的应用场景,我们...
    99+
    2023-10-22
    代码性能提升 Python性能优化 提高Python执行效率
  • 如何优化C++代码的性能?
    如何优化C++代码的性能随着计算机技术的发展,对于软件性能的追求也日益增加。在C++编程中,优化代码的性能是一个非常重要的任务。本文将介绍一些优化C++代码性能的方法和技巧,帮助读者了解如何提高程序的运行效率。第一步是对代码进行合理的设计。...
    99+
    2023-11-02
    性能优化 代码优化 C++编程
  • Python 代码性能优化技巧
    1. Vim2. Eclipse with PyDev3. Sublime Text4. Emacs5. Komodo Edit6. PyCharm7. Wing8. PyScripter9. The Eric Python IDE10. ...
    99+
    2023-01-31
    性能 代码 技巧
  • java性能优化之分代回收
    目录前言什么是分代回收?为什么采用分代回收?年轻代回收老年代回收更加厉害的回收方式垃圾收集器的权衡前言 我们今天一起来聊一聊关于垃圾收集的细节问题。垃圾收集是通过何种方式减少stop...
    99+
    2024-04-02
  • Vue项目性能优化的方法教程
    本篇内容主要讲解“Vue项目性能优化的方法教程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue项目性能优化的方法教程”吧!一、代码层面的优化1.1、v-if...
    99+
    2024-04-02
  • 优化 Python 代码性能:从算法选择到代码优化技巧
    一、算法选择 算法选择对 Python 代码的性能有重大影响。在选择算法时,需要考虑算法的复杂度、空间消耗和适用场景。常见的算法包括: 排序算法:冒泡排序、快速排序、归并排序、堆排序等。 搜索算法:二分查找、深度优先搜索、广度优...
    99+
    2024-02-06
    Python 性能优化 算法选择 数据结构选择 代码优化 并行计算
  • Vue CLI 性能优化之道:让你的项目飞起来
    开启构建时缓存:利用 --cache 标志缓存依赖项,加快构建速度。 使用多核构建:通过 --parallel 标志并行构建项目,充分利用 CPU 资源。 优化 webpack 配置:根据项目需求自定义 webpack 配置,例如使用源...
    99+
    2024-03-13
    Ⅰ. 构建优化
  • Vue 项目性能优化方案分享
    目录前言一、代码层面的优化1.1、v-if 和 v-show 区分使用场景1.2、computed 和 watch  区分使用场景1.3、v-for遍历必须为item添加k...
    99+
    2024-04-02
  • PHP代码优化与性能提升
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-15
  • Bash 编程:如何优化 Laravel 项目的性能?
    Laravel 是一款流行的 PHP 开发框架,它在开发速度和易用性方面表现出色。但是在实际应用中,由于某些因素的影响,Laravel 的性能可能会受到影响。本文将介绍如何使用 Bash 编程来优化 Laravel 项目的性能。 使用 ...
    99+
    2023-08-02
    学习笔记 laravel bash
  • Vite性能优化之分包策略的实现
    目录为什么需要分包策略?浏览器的缓存策略浏览器缓存策略的不足分包策略的实现为什么需要分包策略? 还是举个例子,来回忆一下吧,什么呢?比如说,我使用了 loadsh.js 的东西,那么...
    99+
    2023-05-19
    Vite 分包策略 Vite 分包
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作