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 相关文章推荐
在网站上应该用的30个jQuery插件整理
Nov 03 Javascript
jQuery Ajax请求状态管理器打包
May 03 Javascript
JavaScript中标识符提升问题
Jun 11 Javascript
Jquery Mobile 自定义按钮图标
Nov 18 Javascript
Vue和Bootstrap的整合思路详解
Jun 30 Javascript
Javascript之图片的延迟加载的实例详解
Jul 24 Javascript
用Webpack构建Vue项目的实践
Nov 07 Javascript
10行原生JS实现文字无缝滚动(超简单)
Jan 02 Javascript
vue 对象添加或删除成员时无法实时更新的解决方法
May 01 Javascript
jsonp实现百度下拉框功能的方法分析
May 10 Javascript
微信小程序实现首页弹出广告
Dec 03 Javascript
javascript实现数字时钟效果
Feb 06 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三层结构(上) 简单三层结构
2010/07/04 PHP
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
2011/08/12 PHP
PHP弱类型的安全问题详细总结
2016/09/25 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
js 可拖动列表实现代码
2011/12/13 Javascript
实例解析JS布尔对象的toString()方法和valueOf()方法
2015/10/25 Javascript
JS使用onerror捕获异常示例
2016/08/03 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
原生Javascript插件开发实践
2017/01/18 Javascript
Bootstrap 下拉多选框插件Bootstrap Multiselect
2017/01/22 Javascript
在NPM发布自己造的轮子的方法步骤
2019/03/09 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
原生js生成图片验证码
2020/10/11 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
2020/10/22 Javascript
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
2014/01/22 Python
对python中return和print的一些理解
2017/08/18 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
2018/10/17 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
2019/06/26 Python
django 微信网页授权登陆的实现
2019/07/30 Python
python对常见数据类型的遍历解析
2019/08/27 Python
tensorflow 初始化未初始化的变量实例
2020/02/06 Python
在keras 中获取张量 tensor 的维度大小实例
2020/06/10 Python
域名注册、建站工具、网页主机、SSL证书:Dynadot
2017/01/06 全球购物
一份软件工程师的面试试题
2016/02/01 面试题
秋季红领巾广播稿
2014/01/27 职场文书
销售顾问岗位职责
2014/02/25 职场文书
党校培训自我鉴定范文
2014/04/10 职场文书
文明之星事迹材料
2014/05/09 职场文书
应届硕士毕业生自荐信
2014/05/26 职场文书
北京导游词
2015/02/12 职场文书
共青团员自我评价
2015/03/10 职场文书
党员个人承诺书
2015/04/27 职场文书
教师读书笔记
2015/06/29 职场文书
2019奶茶店创业计划书范本,值得你借鉴
2019/08/14 职场文书
Python实现Hash算法
2022/03/18 Python
MySQL数据库安装方法与图形化管理工具介绍
2022/05/30 MySQL