详解vue页面首次加载缓慢原因及解决方案

作者:橘子味儿的猫 时间:2024-05-25 15:19:45 

第一次打包vue的项目部署到服务器下时,发现初次加载特别的缓慢,将近20s页面才加载出来,完全没有开发环境上的那么流畅。主要原因是页面在打包后如果不进行相关配置会导致资源文件特别的大,一次想要全部加载完成会特别的耗时。这里简单总结一下自己用到的一些优化的方案。

首先我们可以安装webpack-bundle-analyzer 插件,通过这个插件我们可以在打包的时候看到打包文件的大小,可以明显的看出哪些文件比较大。

解决方案一

1,去掉编译文件中map文件。在编译好后,我们会看到文件夹下有特别多的.map文件,这些文件主要是帮助我们线上调试代码,查看样式。所以为了避免部署包过大,通常都不生成这些文件。

在 config/index.js 文件中将productionSourceMap 的值设置为false. 再次打包就可以看到项目文件中已经没有map文件 (文件大小 35MB-->10.5MB)

2,vue-router 路由懒加载

懒加载即组件的延迟加载,通常vue的页面在运行后进入都会有一个默认的页面,而其他页面只有在点击后才需要加载出来。使用懒加载可以将页面中的资源划分为多份,从而减少第一次加载的时候耗时。

懒加载路由配置:

详解vue页面首次加载缓慢原因及解决方案

非懒加载路由配置:

详解vue页面首次加载缓慢原因及解决方案

如图所示为通过懒加载后打包的js文件。而非懒加载的打包后一般只有一个app.js 文件。

详解vue页面首次加载缓慢原因及解决方案

解决方案二

使用CDN减小代码体积加快请求速度

1. 为什么使用CDN

使用CDN主要解决两个问题:

  • 打包时间太长、打包后代码体积太大,请求慢

  • 服务器网络不稳带宽不高,使用cdn可以回避服务器带宽问题

2. 具体步骤

1.在/index.html中引入CDN


<!DOCTYPE html>
<html>
 <head>
   <meta charset="utf-8">
   <title>vue-manage-system</title>
   <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no">

<script src="https://cdn.bootcss.com/vue/2.5.3/vue.js"></script>
   <script src="https://cdn.bootcss.com/vue-router/2.7.0/vue-router.min.js"></script>
   <script src="https://cdn.bootcss.com/axios/0.17.1/axios.min.js"></script>
   <link rel="stylesheet" href="https://cdn.bootcss.com/element-ui/2.4.0/theme-chalk/index.css" rel="external nofollow" >
   <script src="https://cdn.bootcss.com/element-ui/2.4.0/index.js"></script>

</head>
 <body>
   <div id="app"></div>
 </body>
</html>

注意:修改配置后还是提示Element未定义,是因为Element依赖Vue,vue.js需要在element-ui之前引入,所以vue.js也要改为cnd的引入方式.

2.修改/build/webpack.base.conf.js中修改配置。给module.exports添加externals属性(详见https://webpack.docschina.org/configuration/externals/),其中键是项目中引用的,值是所引用资源的名字。需要注意的是资源名需要查看所引用的JS源码,查看其中的全局变量是什么,例如element-ui的全局变量就说ELEMENT


module.exports = {
 context: path.resolve(__dirname, '../'),
 entry: {
  app: './src/main.js'
 },
 externals: {
  'vue': 'Vue',
  'vue-router': 'VueRouter',
  'ElementUI': 'ELEMENT',
  'axios': 'axios',
 }
}

3.删除原先的import

如果不删除原先的import,项目还是会从node_modules中引入资源。
也就是说不删的话,npm run build时候仍会将引用的资源一起打包,生成文件会大不少。所以我认为还是删了好。

如:

详解vue页面首次加载缓慢原因及解决方案

来源:https://www.cnblogs.com/zyulike/p/11190012.html

标签:vue,首次加载缓慢
0
投稿

猜你喜欢

  • python实现简易五子棋游戏(控制台版)

    2022-01-14 14:38:30
  • python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例

    2021-09-24 03:11:51
  • Microsoft SQL Server 2008 正式发布

    2008-08-07 12:32:00
  • Python中实现switch功能实例解析

    2021-06-03 05:35:09
  • Postman使用详解

    2023-09-03 05:59:36
  • PHP实现对图片的反色处理功能【测试可用】

    2023-11-03 19:41:28
  • 在ubuntu中重置mysql服务器root密码的方法

    2024-01-24 19:40:48
  • Python编程实现线性回归和批量梯度下降法代码实例

    2021-10-13 07:33:27
  • Python进行数据提取的方法总结

    2022-06-23 18:02:45
  • 如何设计广告的用户体验?

    2007-12-20 13:12:00
  • python 爬取古诗文存入mysql数据库的方法

    2024-01-28 13:35:26
  • SSM框架把日志信息保存到数据库过程详解

    2024-01-19 12:56:27
  • JDBC连接MySQL数据库关键的四个步骤

    2009-12-17 12:06:00
  • 揭秘SQL Server 2008性能和可扩展性

    2009-03-10 14:47:00
  • MySQL 逻辑备份与恢复测试的相关总结

    2024-01-19 14:19:20
  • DTS构建组件及其如何完成数据转换服务

    2009-01-20 15:37:00
  • 基于Python实现RLE格式分割标注文件的格式转换

    2022-10-22 08:41:12
  • Pycharm配置anaconda环境图文教程

    2023-11-10 02:18:20
  • Python Flask微信小程序登录流程及登录api实现代码

    2022-03-21 14:33:47
  • Django中间件工作流程及写法实例代码

    2021-09-01 17:47:38
  • asp之家 网络编程 m.aspxhome.com