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的划词搜索实现(备忘)
Sep 14 Javascript
JavaScript 注册事件代码
Jan 27 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
Jan 15 Javascript
jQuery中removeAttr()方法用法实例
Jan 05 Javascript
JavaScript函数详解
Feb 27 Javascript
AngularJS表单详解及示例代码
Aug 17 Javascript
基于angularJS的表单验证指令介绍
Oct 21 Javascript
微信小程序 页面跳转及数据传递详解
Mar 14 Javascript
jquery 禁止鼠标右键并监听右键事件
Apr 27 jQuery
详解Vue2.x-directive的学习笔记
Jul 17 Javascript
JS中的回调函数实例浅析
Mar 21 Javascript
vue 项目build错误异常的解决方法
Apr 22 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 增加了对 .ZIP 文件的读取功能
2006/10/09 PHP
PHP获取网址的顶级域名函数代码
2012/09/24 PHP
关于尾递归的使用详解
2013/05/02 PHP
php中的常用魔术方法总结
2013/08/02 PHP
php5.4传引用时报错问题分析
2016/01/22 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
js限制文本框只能输入数字(正则表达式)
2012/07/15 Javascript
重写javascript中window.confirm的行为
2012/10/21 Javascript
百度地图自定义控件分享
2015/03/04 Javascript
js判断手机号运营商的方法
2015/10/23 Javascript
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
2016/06/08 Javascript
Vue.js快速入门实例教程
2016/10/15 Javascript
angularjs的select使用及默认选中设置
2017/04/08 Javascript
ES6深入理解之“let”能替代”var“吗?
2017/06/28 Javascript
JavaScript实现图片无缝滚动效果
2017/07/07 Javascript
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
jQuery+CSS实现的table表格行列转置功能示例
2018/01/08 jQuery
关于HTML5的data-*自定义属性的总结
2018/05/05 Javascript
对vux点击事件的优化详解
2018/08/28 Javascript
jQuery实现王者荣耀手风琴效果
2020/01/17 jQuery
详解python做UI界面的方法
2019/02/27 Python
Python中字符串与编码示例代码
2019/05/20 Python
Python学习笔记之错误和异常及访问错误消息详解
2019/08/08 Python
python中的split()函数和os.path.split()函数使用详解
2019/12/21 Python
python利用百度云接口实现车牌识别的示例
2020/02/21 Python
allbeauty美国:英国在线美容店
2019/03/11 全球购物
后勤采购员岗位职责
2013/12/19 职场文书
大学生通用个人自我评价
2014/04/27 职场文书
计算机专业毕业生求职信
2014/04/30 职场文书
四查四看自我剖析材料
2014/09/19 职场文书
幼儿园园长安全责任书
2015/05/08 职场文书
宿舍卫生管理制度
2015/08/05 职场文书
60句有关成长的名言
2019/09/04 职场文书
Django项目如何正确配置日志(logging)
2021/04/29 Python
Python保存并浏览用户的历史记录
2022/04/29 Python