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 相关文章推荐
ASP 过滤数组重复数据函数(加强版)
May 31 Javascript
js兼容火狐显示上传图片预览效果的方法
May 21 Javascript
JS实现的简单四则运算计算器功能示例
Sep 27 Javascript
微信小程序实现点击按钮修改字体颜色功能【附demo源码下载】
Dec 05 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
Aug 24 Javascript
js 实现在2d平面上画8的方法
Oct 10 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
Oct 25 Javascript
基于游标的分页接口实现代码示例
Nov 12 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
Aug 09 Javascript
Nautil 中使用双向数据绑定的实现
Oct 02 Javascript
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
Apr 08 Javascript
DWR内存兼容及无法调用问题解决方案
Oct 16 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
PhpDocumentor 2安装以及生成API文档的方法
2014/05/21 PHP
JavaScript访问样式表代码
2010/10/15 Javascript
利用js实现在浏览器状态栏显示访问者在本页停留的时间
2013/12/29 Javascript
Jquery 获取对象的几种方式介绍
2014/01/17 Javascript
jQuery操作CheckBox的方法介绍(选中,取消,取值)
2014/02/04 Javascript
php+ajax+jquery实现点击加载更多内容
2015/05/03 Javascript
js学习阶段总结(必看篇)
2016/06/16 Javascript
微信小程序 loading 详解及实例代码
2016/11/09 Javascript
node.js中grunt和gulp的区别详解
2017/07/17 Javascript
es6基础学习之解构赋值
2018/12/10 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
JS实现商品橱窗特效
2020/01/09 Javascript
js异步接口并发数量控制的方法示例
2020/11/22 Javascript
[27:39]Ti4 循环赛第二日 LGD vs Fnatic
2014/07/11 DOTA
Python Web开发模板引擎优缺点总结
2014/05/06 Python
python连接oracle数据库实例
2014/10/17 Python
Python编程入门的一些基本知识
2015/05/13 Python
python+django快速实现文件上传
2016/10/24 Python
Python中super函数的用法
2017/11/17 Python
Python中协程用法代码详解
2018/02/10 Python
python 获取指定文件夹下所有文件名称并写入列表的实例
2018/04/23 Python
Python远程视频监控程序的实例代码
2019/05/05 Python
PyTorch和Keras计算模型参数的例子
2020/01/02 Python
HTML5在IE10、火狐下中文乱码问题的解决方法
2013/11/18 HTML / CSS
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
ECOSUSI官网:女式皮革背包
2019/09/27 全球购物
四个太阳教学反思
2014/02/01 职场文书
员工薪酬激励方案
2014/06/13 职场文书
爱护公物标语
2014/06/24 职场文书
培训科主任岗位职责
2014/08/08 职场文书
授权委托书公证
2014/09/14 职场文书
周一问候语大全
2015/11/10 职场文书
2016年公务员六五普法心得体会
2016/01/21 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书
Python实战之实现康威生命游戏
2021/04/26 Python
SQLServer中exists和except用法介绍
2021/12/04 SQL Server