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 相关文章推荐
encode脚本和normal脚本混用的问题与解决方法
Mar 08 Javascript
基于jquery实现发送文章到手机的代码
Dec 26 Javascript
原生js和jquery实现图片轮播特效
Apr 23 Javascript
jQuery实现输入框下拉列表树插件特效代码分享
Aug 27 Javascript
javascript从定义到执行 你不知道的那些事
Jan 04 Javascript
Document.body.scrollTop的值总为零的快速解决办法
Jun 09 Javascript
jQuery中页面返回顶部的方法总结
Dec 30 Javascript
使用Bootstrap打造特色进度条效果
May 02 Javascript
详解微信小程序-canvas绘制文字实现自动换行
Apr 26 Javascript
vscode 使用Prettier插件格式化配置使用代码详解
Aug 10 Javascript
JavaScript实现图片放大预览效果
Nov 02 Javascript
js实现验证码干扰(静态)
Feb 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 和 MySQL 基础教程(一)
2006/10/09 PHP
PHP 出现乱码和Sessions验证问题的解决方法!
2008/12/06 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
2016/09/30 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
2018/12/08 PHP
laravel框架模型和数据库基础操作实例详解
2020/01/25 PHP
JavaScript使用cookie
2007/02/02 Javascript
jquery中获取select选中值的代码
2011/06/27 Javascript
JavaScript闭包实例讲解
2014/04/22 Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
2016/03/01 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
2016/06/12 Javascript
nodejs入门教程二:创建一个简单应用示例
2017/04/24 NodeJs
关于vue-router的那些事儿
2018/05/23 Javascript
微信小程序将字符串生成二维码图片的操作方法
2018/07/17 Javascript
通过JS深度判断两个对象字段相同
2019/06/14 Javascript
vue中typescript装饰器的使用方法超实用教程
2019/06/17 Javascript
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
2020/02/12 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
Python中使用Boolean操作符做真值测试实例
2015/01/30 Python
Python中使用md5sum检查目录中相同文件代码分享
2015/02/02 Python
Python玩转Excel的读写改实例
2019/02/22 Python
Python面向对象中类(class)的简单理解与用法分析
2020/02/21 Python
python使用多线程+socket实现端口扫描
2020/05/28 Python
详解如何将 Canvas 绘制过程转为视频
2021/01/25 HTML / CSS
欧洲最大的婴幼儿服装及内衣公司:Petit Bateau(小帆船)
2016/08/16 全球购物
美国Lolё官网:购买大胆而美丽的女性运动服装
2017/05/22 全球购物
德国街头和运动文化高品质商店:BSTN Store
2017/08/26 全球购物
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
英国网上电器商店:Electricshop
2020/03/15 全球购物
全球精选男装和家居用品:Article
2020/04/13 全球购物
EJB的角色和三个对象
2015/12/31 面试题
财务管理个人自荐书范文
2013/11/24 职场文书
销售团队口号大全
2014/06/06 职场文书
护林员个人总结
2015/03/04 职场文书
员工开除通知书
2015/04/25 职场文书
2015年车间安全管理工作总结
2015/05/13 职场文书
React更新渲染原理深入分析
2022/12/24 Javascript