vue-cli项目优化方法- 缩短首屏加载时间


Posted in Javascript onApril 01, 2018

最近实习的项目需求上要求不多,就学了下项目优化,主要是首屏加载太慢。

大文件定位

我们可以使用webpack可视化插件Webpack Bundle Analyzer 查看工程js文件大小,然后有目的的解决过大的js文件。

安装

npm install --save-dev webpack-bundle-analyzer

在webpack中设置如下,然后npm run dev 的时候默认会在8888端口显示。

const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
module.exports = {
 plugins: [
  new BundleAnalyzerPlugin()
 ]
}

JS文件按需加载

如果没有这个设置,项目首屏加载时会加载整个网站所有的JS文件,所以将JS文件拆开,点击某个页面时再加载该页面的JS是一个很好的优化方法。

这里用到的就是vue的组件懒加载。在router.js中,不要使用import的方法引入组件,使用require.ensure。

import index from '@/components/index'
const index = r => require.ensure( [], () => r (require('@/components/index'),'index'))
//如果写了第二个参数,就打包到该`/JS/index` 的文件中。
//不写第二个参数,就直接打包在`/JS` 目录下。
const index = r => require.ensure( [], () => r (require('@/components/index')))

使用cdn

打包时,把vue、vuex、vue-router、axios等,换用国内的bootcdn 直接引入到根目录的index.html中。

在webpack设置中添加externals,忽略不需要打包的库。

externals: { 
 'vue': 'Vue', 
 'vue-router': 'VueRouter', 
 'vuex': 'Vuex', 
 'axios': 'axios' 
}

在index.html中使用cdn引入。

<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>

将JS文件放在body的最后

默认情况下,build后的index.html中,js的引入是在header中。

使用html-webpack-plugin插件,将inject的值改成body。就可以将js引入放到body最后。

var HtmlWebpackPlugin = require('html-webpack-plugin');
new HtmlWebpackPlugin({
   inject: 'body',
})

压缩代码并移除console

使用UglifyJsPlugin 插件来压缩代码和移除console。

new webpack.optimize.UglifyJsPlugin({
 compress: {
  warnings: false,
  drop_console: true,
  pure_funcs: ['console.log']
 },
 sourceMap: false
})

暂时只查到了这几个优化方法。

Javascript 相关文章推荐
Javascript &amp; DHTML 实例编程(教程)DOM基础和基本API
Jun 02 Javascript
基于jquery实现控制经纬度显示地图与卫星
May 20 Javascript
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
Mar 05 Javascript
Vue.js每天必学之过滤器与自定义过滤器
Sep 07 Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
Jan 08 Javascript
vue2.0实现分页组件的实例代码
Jun 22 Javascript
layui table 参数设置方法
Aug 14 Javascript
js实现每日签到功能
Nov 29 Javascript
一些你可能不熟悉的JS知识点总结
Mar 15 Javascript
vue视图不更新情况详解
May 16 Javascript
npm全局环境变量配置详解
Dec 15 Javascript
vue.js 使用原生js实现轮播图
Apr 26 Vue.js
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
Apr 01 #Javascript
Vue项目使用CDN优化首屏加载问题
Apr 01 #Javascript
对Angular中单向数据流的深入理解
Mar 31 #Javascript
jQuery中复合选择器简单用法示例
Mar 31 #jQuery
jQuery中内容过滤器简单用法示例
Mar 31 #jQuery
jQuery中可见性过滤器简单用法示例
Mar 31 #jQuery
Postman模拟发送带token的请求方法
Mar 31 #Javascript
You might like
详细介绍PHP应用提速面面观
2006/10/09 PHP
PHP实现HTML生成PDF文件的方法
2014/11/07 PHP
php创建和删除目录函数介绍和递归删除目录函数分享
2014/11/18 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
9个比较实用的php代码片段
2016/03/15 PHP
Laravel框架实现利用中间件进行操作日志记录功能
2018/06/06 PHP
javascript学习(一)构建自己的JS库
2013/01/02 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
JS在IE下缺少标识符的错误
2014/07/23 Javascript
extjs 如何给column 加上提示
2014/07/29 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
js实现发送验证码后的倒计时功能
2015/05/28 Javascript
jquery获取复选框checkbox的值的简单实现方法
2016/05/26 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
2017/12/22 Javascript
Angular5中调用第三方库及jQuery的添加的方法
2018/06/07 jQuery
JS插件clipboard.js实现一键复制粘贴功能
2020/12/04 Javascript
js将URL网址转为16进制加密与解密函数
2020/03/04 Javascript
Python中对象迭代与反迭代的技巧总结
2016/09/17 Python
利用Pyhton中的requests包进行网页访问测试的方法
2018/12/26 Python
python中的函数递归和迭代原理解析
2019/11/14 Python
python 实现方阵的对角线遍历示例
2019/11/29 Python
Python嵌套函数,作用域与偏函数用法实例分析
2019/12/26 Python
Pytorch自己加载单通道图片用作数据集训练的实例
2020/01/18 Python
python3 循环读取excel文件并写入json操作
2020/07/14 Python
微软俄罗斯官方网站:Microsoft俄罗斯
2016/09/18 全球购物
豪华复古化妆:Besame Cosmetics
2019/09/06 全球购物
建筑工程专业学生的自我评价
2013/12/25 职场文书
策划总监岗位职责
2014/02/16 职场文书
银行转正自我鉴定
2014/09/29 职场文书
地道战观后感500字
2015/06/04 职场文书
2015国庆节66周年标语
2015/07/30 职场文书
结婚十年感言
2015/07/31 职场文书
python 定义函数 返回值只取其中一个的实现
2021/05/21 Python
React配置子路由的实现
2021/06/03 Javascript
Python实现拼音转换
2021/06/07 Python