Vue-Cli项目优化操作的实现


Posted in Javascript onOctober 27, 2019

起源

由Vue-Cli(2.X)生成的Vue项目中存在着首屏加载过慢,编译资源过大等问题,主要针对这些问题对项目进行相应的优化,提升项目响应速度,优化项目性能。

操作

路由懒加载

在Vue-router官方文档中有针对懒加载的介绍,主要是将整个大的js进行切片,对当前路由的资源进行一个按需加载。在Vue-cli生成的路由组件引用方法是这样的

import HelloWorld from '@/components/HelloWorld'

只需将组件的引用方式改为

const HelloWorld = () =>
  import ('@/components/HelloWorld')

然后重新编译即可

开启预加载/优先加载

使用webpack插件 PreloadWebpackPlugin 进行预加载prefetch和优先加载preload。 主要做的是用preload加载vendor、manifest与app三个js而用prefetch去加载所有路由对应的文件。 首先要 安装插件

npm install --save preload-webpack-plugin

在 webpack.prod.conf.js 中修改,加入预加载的代码 (注意放在 new HtmlWebpackPlugin() 的下面)

new PreloadWebpackPlugin({
 rel: 'prefetch',
}),
new PreloadWebpackPlugin({
 rel: 'preload',
 as(entry) {
  if (/\.css$/.test(entry)) return 'style'
  return 'script';
 },
 include: ['app', 'vendor', 'manifest']
})

开启GZip

gzip,使用gzip压缩资源可以更快地加载资源。客户端http请求头声明浏览器支持的压缩方式,服务端配置启用压缩,压缩的文件类型,压缩方式。当客户端请求到服务端的时候,服务器解析请求头,如果客户端支持gzip压缩,响应时对请求的资源进行压缩并返回给客户端,浏览器按照自己的方式解析,在http响应头,我们可以看到 content-encoding:gzip ,这是指服务端使用了gzip的压缩方式。

启用gzip,在nginx的site-conf中开启gzip

server {
  gzip on;
  gzip_types    text/xml text/css text/plain text/javascript application/javascript application/x-javascript;
}

webpack处理,需要先安装插件

npm install --save-dev compression-webpack-plugin

然后在config的index.js中 ,将productionGzip改为true,开启Gzip压缩。

PS:如果编译报错,则安装 compression-webpack-plugin@1.1.12 版本

对第三方工具库进行额外处理

本项目中Vender中主要是Vue,Vue-router,axios等固定依赖的代码,工具库的代码一般不会改动,所以可以将这些工具库的代码抽出来,单独走CDN加载以减少编译JS文件的大小。 具体操作 : 选择相应的工具库版本的cdn,加入到index.html中

<script src="//cdn.bootcss.com/vue/2.2.5/vue.min.js"></script>
<script src="//cdn.bootcss.com/vue-router/2.3.0/vue-router.min.js"></script>
<script src="//cdn.bootcss.com/vuex/2.2.1/vuex.min.js"></script>
<script src="//cdn.bootcss.com/axios/0.15.3/axios.min.js"></script>

之后去到webpack中修改相应的打包配置

externals: {
 'vue': 'Vue',
 'vue-router': 'VueRouter',
 'vuex': 'Vuex',
 'axios': 'axios'
}

ps:倘若main.js中有关于公共库的引用 请记得清除掉 这时再去编译 打包 就会发现编译的Vender.js小了很多

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
Mar 27 Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
Jan 30 Javascript
JS常用表单验证方法总结
May 22 Javascript
javascript版2048小游戏
Mar 18 Javascript
jQuery检测输入的字符串包含的中英文的数量
Apr 17 Javascript
JS获取url参数、主域名的方法实例分析
Aug 03 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
Oct 14 Javascript
JavaScript高仿支付宝倒计时页面及代码实现
Oct 21 Javascript
基于JavaScript实现Tab选项卡切换效果
Nov 24 Javascript
小程序实现授权登陆的解决方案
Dec 02 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
Jan 08 jQuery
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
Sep 12 Javascript
layui table 复选框跳页后再回来保持原来选中的状态示例
Oct 26 #Javascript
Layui 解决表格异步调用后台分页的问题
Oct 26 #Javascript
Layui实现数据表格默认全部显示(不要分页)
Oct 26 #Javascript
vue-router的钩子函数用法实例分析
Oct 26 #Javascript
VUE兄弟组件传值操作实例分析
Oct 26 #Javascript
layui实现给某一列加点击事件
Oct 26 #Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
Oct 26 #Javascript
You might like
PHP最常用的2种设计模式工厂模式和单例模式介绍
2012/08/14 PHP
php数组去重的函数代码
2013/02/03 PHP
thinkPHP模型初始化实例分析
2015/12/03 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
2019/04/15 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
YII2框架中日志的配置与使用方法实例分析
2020/03/18 PHP
js实现一个省市区三级联动选择框代码分享
2013/03/06 Javascript
jQuery中trigger()方法用法实例
2015/01/19 Javascript
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
理解javascript中的原型和原型链
2015/07/30 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
2017/01/20 Javascript
Node.JS更改Windows注册表Regedit的方法小结
2017/08/18 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
nodejs使用express获取get和post传值及session验证的方法
2017/11/09 NodeJs
JS数组去重常用方法实例小结【4种方法】
2018/05/28 Javascript
vue 在服务器端直接修改请求的接口地址
2020/12/19 Vue.js
关于element的表单组件整理笔记
2021/02/05 Javascript
[03:37]2016完美“圣”典 风云人物:Mikasa专访
2016/12/07 DOTA
总结Python编程中三条常用的技巧
2015/05/11 Python
Python判断文件或文件夹是否存在的三种方法
2017/07/27 Python
Python 3.x读写csv文件中数字的方法示例
2017/08/29 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
2019/07/31 Python
通过python扫描二维码/条形码并打印数据
2019/11/14 Python
Python反爬虫伪装浏览器进行爬虫
2020/02/28 Python
基于Python绘制美观动态圆环图、饼图
2020/06/03 Python
深入了解Python装饰器的高级用法
2020/08/13 Python
一套带答案的C++笔试题
2014/01/10 面试题
高职教师岗位职责
2013/12/24 职场文书
2014年服务行业工作总结
2014/11/18 职场文书
2014年减负工作总结
2014/12/10 职场文书
女性励志书籍推荐
2019/08/19 职场文书
CSS3 制作的图片滚动效果
2021/04/14 HTML / CSS
MySQL 查询速度慢的原因
2021/05/25 MySQL
Golang 切片(Slice)实现增删改查
2022/04/22 Golang
阿里云服务器(windows)手动部署FTP站点详细教程
2022/08/05 Servers
Rust中的Struct使用示例详解
2022/08/14 Javascript