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 相关文章推荐
JavaScript CSS修改学习第二章 样式
Feb 19 Javascript
简略的前端架构心得&amp;&amp;基于editor为例子的编码小技巧
Nov 25 Javascript
jquery简单瀑布流实现原理及ie8下测试代码
Jan 23 Javascript
js监听滚动条滚动事件使得某个标签内容始终位于同一位置
Jan 24 Javascript
jQuery 顶部导航跟随滚动条滚动固定浮动在顶部
Jun 06 Javascript
JS制作简单的三级联动
Mar 18 Javascript
实现非常简单的js双向数据绑定
Nov 06 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
May 05 Javascript
jQuery实现手势解锁密码特效
Aug 14 jQuery
小程序如何使用分包加载的实现方法
May 22 Javascript
JS实现骰子3D旋转效果
Oct 24 Javascript
24个ES6方法解决JS实际开发问题(小结)
May 31 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
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
PHP写杨辉三角实例代码
2011/07/17 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
2019/05/14 PHP
基于jquery实现漂亮的动态信息提示效果
2011/08/02 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
2013/12/25 Javascript
Javascript字符串对象的常用方法简明版
2014/06/26 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
2014/08/15 Javascript
使用node.js 获取客户端信息代码分享
2014/11/26 Javascript
JavaScript中的toLocaleDateString()方法使用简介
2015/06/12 Javascript
前端设计师们最常用的JS代码汇总
2016/09/25 Javascript
jQuery向webApi提交post json数据
2017/01/16 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
2017/11/17 Javascript
微信小程序支付PHP代码
2018/08/23 Javascript
layui 动态设置checbox 选中状态的例子
2019/09/02 Javascript
Vue组件通信入门之Provide和Inject机制
2019/12/29 Javascript
vue中可编辑树状表格的实现代码
2020/10/31 Javascript
[00:12]DAC2018 Miracle-站上中单舞台,他能否再写奇迹?
2018/04/06 DOTA
Python3爬虫学习之MySQL数据库存储爬取的信息详解
2018/12/12 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
2019/02/22 Python
python basemap 画出经纬度并标定的实例
2019/07/09 Python
基于Django的乐观锁与悲观锁解决订单并发问题详解
2019/07/31 Python
python实现飞机大战小游戏
2019/11/08 Python
python3.5的包存放的具体路径
2020/08/16 Python
基于python实现操作redis及消息队列
2020/08/27 Python
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
Desigual德国官网:在线购买原创服装
2018/03/27 全球购物
俄罗斯童装网上商店:BebaKids
2020/06/06 全球购物
化学实验员岗位职责
2013/12/28 职场文书
网络营销策划方案
2014/06/04 职场文书
重阳节演讲稿:尊敬帮助老人 弘扬传统美德
2014/09/25 职场文书
企业爱心捐款倡议书
2015/04/27 职场文书
2015年秋季小班开学寄语
2015/05/27 职场文书
介绍信应该怎么开?
2019/04/03 职场文书
导游词之青城山景区
2019/09/27 职场文书
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫