首页 > 其他分享 >Vue 项目性能优化实践

Vue 项目性能优化实践

时间:2023-08-21 12:22:17浏览次数:64  
标签:异步 Vue app 实践 使用 组件 优化 加载

Vue已经成为前端必备利器了,Vue首页加载速度慢是很常见的问题,dist文件的体积差不多都在10m左右,解决方式也有很多,最简单的方式增加服务器的配置性能,当然在预算有限的情况下,如果通过优化来提升速度呢。 比如在一台普通配置服务器上,差不多加载速度在15s左右,那是没办法接受的,不管是用户体验还是响应速度上。

这里我以自己常接触到的 Vue 为例进行说明,但也要特别说明下,本人的水平有限,如果有理解不到位的地方也欢迎大家拍砖。

相信和我一样选择 Vue 框架的主要原因是,它作为当前最流行的 JavaScript 前端框架之一,在轻量、效率、灵活度上面有比较强的优势。但是在实际的项目中深入使用发现,一些合理的技巧可以在一定程度上提升app的性能表现。

想把自己发现关于解决加载速度的一些经验分享给大家。

一、初次打开加载速度慢

在我所经历的项目中有过这样一种情况,如果一次性加载所有的组件,就会很明显的出现打包后的 JavaScript 文件体积过大,直接影响到了 app 初次加载速度。

在社区搜索了懒加载相关的处理办法,再和团队讨论后的办法是只加载需要的组件,等到app需要的时候再异步加载其他组件。

其实在 Vue 中使用懒加载的方式很简单,总括起来只需要两步:

  • 使用动态 import 语法进行按需加载组件。
  • 将加载的组件定义为异步组件。

这里放一个 demo 出来:

这样做的话 Home 组件就只会在需要的时候加载,可以在一定程度上避免加载首页不需要的组件,也能够明显的提升 app 加载速度。

二、重复渲染的解决办法

会发现在我们实际的应用中会存在频繁切换查看某些组件的情况,这时就不可避免的造成重复渲染,影响到app的性能。

而大家都知道 Keep-alive 组件是 Vue 项目中的一个高阶组件,是可以帮助我们缓存组件实例,提高应用程序的性能和响应速度的,只要合理的配合使用 keep-alive 组件实现缓存就能避免每次切换都得重新渲染。

同样配合一个demo:

其实它的逻辑就是使用 keep-alive 组件将动态组件包裹起来,Vue就会缓存不活动的组件实例。例如在上面的demo里面将 currentView 动态组件使用 keep-alive 包裹起来,currentView 在切换时就会被缓存起来,实现组件的高效循环利用。

但是需要注意的一点是,我们在使用 keep-alive 组件时会默认缓存所有组件,如果需要指定缓存的组件可以使用 include 和 exclude 属性。

三、提取数据时卡顿问题

除了前面说到的懒加载和 keep-alive 组件外,我们还可以通过创建好组件实例,以异步获取数据的形式去提升加载的速度,继而再显示组件的方式,最终这种方式可以让数据提前准备好,一旦组件需要显示时,就可以避免因为实时获取数据而造成的卡顿。

我个人实现的使用方式是在 beforeMount 中获取数据,然后在 mounted 中控制显示组件:

四、合理的异步组件使用

最后我还想分享下 Vue 提供的异步组件,其实合理使用也可以发挥比较好的效果,具体的实现和最上面介绍的懒加载组件类似。

区别有两点:一是懒加载组件主要是在首次访问时使用;二是异步组件在创建组件实例时进行使用。因为异步组件的基本使用逻辑是在创建实例的时候会异步解析,可以按需加载,实现方式:

五、应用轻应用技术代替H5

我们知道目前轻应用也正在流行起来,其中又属小程序具有代表性,虽然不可以直接使用 Vue 开发小程序。但可以通过使用小程序开发框架,例如 Taro、Mpvue 和 uni-app,可以将 Vue.js 前端框架的开发方式与小程序相结合。这些框架可以将前端框架的语法和特性转换为小程序的语法和特性,从而使得开发人员可以使用熟悉的开发方式来开发小程序。

这里还要推荐一个深化发挥小程序价值的途径,直接将现有的小程序搬到自有 App 中进行运行,这种实现技术路径叫做小程序容器,例如 FinClip SDK 是通过集成 SDK 的形式让自有的 App 能够像微信一样直接运行小程序。

这样一来不仅可以通过前端框架提升小程序的开发效率,还能让小程序运行在微信以外的 App 中,真正实现了一端开发多端上架,另外由于小程序是通过管理后台上下架,相当于让 App 具备热更新能力,避免 AppStore 频繁审核。

相信大家在关于 Vue 框架使用上还有更好更多的经验,我仅按照自己的使用习惯分享几个相对来说比较适合广泛用起来的办法,也欢迎各位大佬补充和指正。

 

标签:异步,Vue,app,实践,使用,组件,优化,加载
From: https://www.cnblogs.com/Xxx1m/p/17645697.html

相关文章

  • DP优化
    DP的效率取决于\(3\)方面:1.状态总数2.每个状态的决策数3.状态转移计算量。这三方面都可以进行优化。状态总数优化:相当于搜索的剪枝,去除无用状态;使用降维,设计DP状态时尽量使用低维的DP。决策数量优化:即状态转移方程的优化,减少决策数量,如斜率优化,四边形不等式优化。......
  • vue通讯的几种方式
    1.props和$emit。父组件向子组件传递数据是通过props传递的,子组件传递给父组件是通过$emit触发事件来做到的。2. 父组件中通过provide来提供变量,然后在子组件中通过inject来注入变量。3.$refs获取组件实例。4.envetBus兄弟组件数据传递,这种情况下可以使用事件总线的方......
  • 头疼!卷积神经网络是什么?CNN结构、训练与优化一文全解
    本文全面探讨了卷积神经网络CNN,深入分析了背景和重要性、定义与层次介绍、训练与优化,详细分析了其卷积层、激活函数、池化层、归一化层,最后列出其训练与优化的多项关键技术:训练集准备与增强、损失函数、优化器、学习率调整、正则化技巧与模型评估调优。旨在为人工智能学者使用卷......
  • 使用VuePress打造的LearnData知识库帮助我更好地学习和传播 - 从笔记到分享
    在当今快节奏的社会中,技术变化日新月异。作为一名技术博客站长,我深切感受到了学习和传播知识的重要性。为了更好地满足读者的需求,我决定采用VuePress搭建一个功能强大且易于维护的知识库平台,名为LearnData。本文将介绍我如何利用VuePress构建LearnData,并展示一些相关的代码示例。......
  • Oracle数据库经纬度坐标查询优化与结果错误原因分析、SQL中WKT超长文本字符串处理
    目录一、Oracle几何空间数据对象和其他数据库的差异二、Oracle查询一个经纬度坐标是否在边界内部2.1查询条件2.2查询结果错误,似乎是仅做了MBR匹配2.3错误原因2.4解决办法三、SQL中WKT超长文本在Oracle中如何编写3.1Oracle中执行含超长文本的SQL报错3.2使用CLOB无限拼接得到......
  • 深入了解Elasticsearch搜索引擎篇:倒排索引、架构设计与优化策略
    什么是倒排索引?有什么好处?倒排索引是一种用于快速检索的数据结构,常用于搜索引擎和数据库中。与传统的正排索引不同,倒排索引是根据关键词来建立索引,而不是根据文档ID。倒排索引的建立过程如下:首先,将每个文档拆分成一系列的关键词或词项,然后建立一个词项到文档的映射。对每个关键......
  • SpringBoot 测试实践 - 1:常用的工具
    我自己接触到的一些商业或是开源的基于SpringBoot项目,它们大部分是没有测试代码的,test文件夹只有脚手架初始化生成的那个测试类,跟不同的开发聊到这个话题,发现他们中的大部分没有写测试的习惯,或者是觉得写测试代码麻烦,主要还是依赖测试工程师做黑盒的测试。只做黑盒测试的话有一......
  • 2.1 入门实践-一张普通报表
    一、普通报表1.概述1.1报表设计流程图1.2报表设计案例目标这张报表由三部分构成:参数面板:通过下拉框控件选择地区,查询出对应地区的数据。表格:表格统计该地区下各销售员每个产品的销量。柱形图:柱形图将表格中的数据以图表的形式进行展示。2.制作步骤2.1新建......
  • SQL优化(2)
    数据库优化快照隔离在保护事务不脏读未提交的数据修改的同时尽量减少锁定争用(数据修改的同时可以读取未提交修改前的) 查询状态SELECTname,is_read_committed_snapshot_onFROMsys.database设置快照隔离ALTERDATABASEdatabase_nameSETREAD_COMMITTED_SNAPSHOTON......
  • SQL 优化(1)
    SQLServer查询优化器筛选条件分析通过筛选条件减少扫描范围注意项:模糊查询,尽量不要把百分号放置在前面:LIKE‘%xx’,查询优化器无法对此优化,只能扫描查找(表扫描或索引扫描查找)尽量避免使用OR(可考虑UNIONALL),扰乱查询优化器流程避免对列值进行运算,查询不走索引避免使用NO......