VUE单页应用首屏加载优化技巧
时间:2020-05-28
本文章向大家介绍VUE单页应用首屏加载优化技巧,主要包括VUE单页应用首屏加载优化技巧使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
单页应用会随着项目越大,导致首屏加载速度很慢!!!结合目前商城 h5 的首屏加载,以下给出几种优化方案:
- 使用 CDN 资源,减小服务器带宽压力
- 路由懒加载
- 按需加载三方资源,如 vant,建议按需引入 vant 中的组件
- 使用 nginx 开启 gzip 减小网络传输的流量大小
- 首页引入的自定义组件合并成一个分组返回,减少js请求
- app在启动页的时候预先加载首屏
- 利用localstorage缓存首屏数据,每次进入首页优先读取缓存数据,请求首屏接口后返回的数据再更新到缓存里
- 图片使用懒加载展示
- 其他不常用方案(淘宝的cdn的combo技术、br压缩代替gzip压缩)
一、使用 CDN 资源,减小服务器带宽压力
- 在 index.html 中引入 cdn 资源
...
<body>
<div id="app">
</div>
<!-- built files will be auto injected -->
<script src="https://cdn-h5.iauto360.cn/h5-mall/js/vue.min.js"></script>
<script src="https://cdn-h5.iauto360.cn/h5-mall/js/vue-router.min.js"></script>
<script src="https://cdn-h5.iauto360.cn/h5-mall/js/vue-lazyload.js"></script>
<script src="https://cdn-h5.iauto360.cn/h5-mall/js/axios.min.js"></script>
</body>
...
- 修改vue.config.js
module.exports = {
...
externals:{
"vue": "Vue",
'vue-router': 'VueRouter',
"vue-lazyload": "VueLazyload",
"axios": "axios",
},
...
}
二、路由懒加载
require.ensure 方式
const workCircle = r => require.ensure([], () => r(require('@/module/work-circle/Index')), 'workCircle')
const workCircleList = r => require.ensure([], () => r(require('@/module/work-circle/pa
import 方式
const workCircle = () => import('@/module/work-circle/Index')
三、按需加载三方资源,如 vant,建议按需引入 vant 中的组件
import {
Dialog
} from 'vant';
Vue.use(Dialog);
四、使用 nginx 开启 gzip 减小网络传输的流量大小
(1)服务端开启gzip压缩
(2)前端生产环境生成gzip,服务器可以直接读取生成的gzip文件,不需要服务器自己再去压缩文件返回给前端
config.plugins.push(new CompressionWebpackPlugin({
algorithm: 'gzip',
test: new RegExp(/\.(js|css|svg|woff|ttf|json|html)$/),
threshold: 10240,
minRatio: 0.8
}))
五、首页引入的自定义组件合并成一个分组返回,减少js请求
1、 es 提案的 import()
// 下面2行代码,指定了相同的webpackChunkName,会合并打包成一个js文件。
const ImportFuncDemo = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '../components/ImportFuncDemo')
const ImportFuncDemo2 = () => import(/* webpackChunkName: 'ImportFuncDemo' */ '../components/ImportFuncDemo2')
2、webpack 提供的 require.ensure()
MBanner: resolve => require.ensure([],()=>resolve((require('../components/m-banner/banner'))), 'component.group1'),
MMenuigroup: resolve => require.ensure([],()=>resolve((require('../components/m_menu_i_group/m_menu_i_group'))), 'component.group1'),
MJoinr: resolve => require.ensure([],()=>resolve((require('../components/m_join_r/m_join_r'))), 'component.group1'),
MUsualr: resolve => require.ensure([],()=>resolve((require('../components/m_usual_r/m_usual_r'))), 'component.g
原文地址:https://www.cnblogs.com/ivan5277/p/12981018.html
- spring之config.xml完整版示例
- 前端MVC Vue2学习总结(五)——表单输入绑定、组件
- 【HCTF】2017部分Web出题思路详解
- 前端MVC Vue2学习总结(四)——条件渲染、列表渲染、事件处理器
- 如何移除Android应用广告
- 前端MVC Vue2学习总结(三)——模板语法、过滤器、计算属性、观察者、Class 与 Style 绑定
- 前端MVC Vue2学习总结(二)——Vue的实例、生命周期与Vue脚手架(vue-cli)
- hive具体操作
- hive中配置hwi
- 从零开始内网安全渗透学习
- hive启动后相关操作
- 开源API测试工具 Hitchhiker v0.10 - 中文版
- 强大的API测试工具Hitchhiker v0.9 基于UI的断言测试,回顾2017
- 开源API测试工具 Hitchhiker v0.8 - 自动化测试结果统计
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 面试中的路由问题
- BOSS直聘招聘信息获取之使用webdriver进行爬取
- es6中class的一些基础知识和es5语法的对比
- Windows 系统常用命令行命令(一):前言
- Vue项目使用mt-picker实现省市区三级联动踩坑记录
- Windows 系统常用命令行命令(二):路径与文件夹操作
- 微信小程序订阅消息推送
- 2020年中央一号文件说了啥?
- mpvue框架下小程序分享朋友圈功能实现
- Stata与Python等效操作与调用
- 杂乱文件自动分类
- ABAP Development Tool前后台交互的原理
- Stata | covid19 命令下载疫情数据
- Stata&Python | 分别实现多元线性回归
- Stata | 用 frames 来“分蛋糕”