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的finkyUI插件与Ajax实现页面数据加载功能
Dec 03 Javascript
封装的jquery翻页滚动(示例代码)
Nov 18 Javascript
JavaScript将数据转换成整数的方法
Jan 04 Javascript
TypeScript 中接口详解
Jun 19 Javascript
javascript入门教程基础篇
Nov 16 Javascript
Bootstrap每天必学之媒体对象
Nov 30 Javascript
JavaScript驾驭网页-获取网页元素
Mar 24 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
Jul 28 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
Nov 22 Javascript
echarts学习笔记之图表自适应问题详解
Nov 22 Javascript
一文搞懂ES6中的Map和Set
May 20 Javascript
vue-quill-editor插入图片路径太长问题解决方法
Jan 08 Vue.js
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+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
YII模块实现绑定二级域名的方法
2014/07/09 PHP
PHP解密Unicode及Escape加密字符串
2015/05/17 PHP
PHP面向对象继承用法详解(优化与减少代码重复)
2016/12/02 PHP
PHP后台微信支付和支付宝支付开发
2017/04/28 PHP
JavaScript高级程序设计(第3版)学习笔记10 再访js对象
2012/10/11 Javascript
Extjs4 Treegrid 使用心得分享(经验篇)
2013/07/01 Javascript
AngularJS基础知识笔记之表格
2015/05/10 Javascript
基于jquery实现百度新闻导航菜单滑动动画
2016/03/15 Javascript
Ajax分页插件Pagination从前台jQuery到后端java总结
2016/07/22 Javascript
Javascript仿京东放大镜的效果
2017/03/01 Javascript
VUE实现日历组件功能
2017/03/13 Javascript
vue实现留言板todolist功能
2017/08/16 Javascript
angular中ui calendar的一些使用心得(推荐)
2017/11/03 Javascript
微信小程序之圆形进度条实现思路
2018/02/22 Javascript
Vue中使用Sortable的示例代码
2018/04/07 Javascript
Python Queue模块详解
2014/11/30 Python
使用Python求解最大公约数的实现方法
2015/08/20 Python
Python中shape计算矩阵的方法示例
2017/04/21 Python
Python语言描述最大连续子序列和
2017/12/05 Python
python面向对象法实现图书管理系统
2019/04/19 Python
使用python实现CGI环境搭建过程解析
2020/04/28 Python
增大python字体的方法步骤
2020/07/05 Python
html5 Canvas画图教程(2)—画直线与设置线条的样式如颜色/端点/交汇点
2013/01/09 HTML / CSS
HTML table 表格边框的实现思路
2019/10/12 HTML / CSS
英国最受欢迎的手表网站:Watch Shop
2016/10/21 全球购物
美国儿童珠宝在线零售商:Loveivy
2019/05/22 全球购物
医学检验专业个人求职信范文
2013/12/04 职场文书
煤矿班组长的职责
2013/12/25 职场文书
致短跑运动员广播稿
2014/01/09 职场文书
工作个人的自我评价
2014/01/14 职场文书
地球一小时宣传标语
2014/06/24 职场文书
中学教师师德师风演讲稿
2014/08/22 职场文书
领导班子整改方案和个人整改措施
2014/10/25 职场文书
2016年社会主义核心价值观心得体会
2016/01/21 职场文书
工作汇报材料难写?方法都在这里了!
2019/07/01 职场文书