详解vue项目优化之按需加载组件-使用webpack require.ensure


Posted in Javascript onJune 13, 2017

使用 vue-cli构建的项目,在 默认情况下 ,执行 npm run build  会将所有的js代码打包为一个整体,

打包位置是 dist/static/js/app.[contenthash].js  

类似下面的路由代码

router/index.js  路由相关信息,该路由文件引入了多个 .vue组件

import Hello from '@/components/Hello'
import Province from '@/components/Province'
import Segment from '@/components/Segment'
import User from '@/components/User'
import Loading from '@/components/Loading'

执行 npm run build 会打包为一个整体 app.[contenthash].js ,这个文件是非常大,可能几兆或者几十兆,加载会很慢

详解vue项目优化之按需加载组件-使用webpack require.ensure

所以我们需要分模块打包,把我们想要组合在一起的组件打包到一个 chunk块中去

分模块打包需要下面这样使用 webpack的 require.ensure,并且在最后加入一个 chunk名,

相同 chunk名字的模块将会打包到一起

router/index.js 修改为懒加载组件

const Province = r => require.ensure([], () => r(require('@/components/Province.vue')), 'chunkname1')
const Segment = r => require.ensure([], () => r(require('@/components/Segment.vue')), 'chunkname1')
const Loading = r => require.ensure([], () => r(require('@/components/Loading.vue')), 'chunkname3')
const User = r => require.ensure([], () => r(require('@/components/User.vue')), 'chunkname3')

根据 chunkame的不同, 上面的四个组件, 将会被分成3个块打包,最终打包之后与组件相关的js文件会分为3个 (除了app.js,manifest.js, vendor.js)

分模块打包之后在 dist目录下是这样的, 这样就把一个大的 js文件分为一个个小的js文件了,按需去下载,其他的使用方法和import的效果一样

详解vue项目优化之按需加载组件-使用webpack require.ensure

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
extJs 常用到的增,删,改,查操作代码
Dec 28 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
Jul 13 Javascript
jquery.validate分组验证代码
Mar 17 Javascript
js 幻灯片的实现
Dec 06 Javascript
常用一些Javascript判断函数
Aug 14 Javascript
JS截取url中问号后面参数的值信息
Apr 29 Javascript
js函数调用的方式
May 06 Javascript
TypeScript入门-基本数据类型
Mar 28 Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
Dec 05 Javascript
微信小程序静默登录的实现代码
Jan 08 Javascript
uniapp开发小程序实现滑动页面控制元素的显示和隐藏效果
Dec 10 Javascript
Ajax是什么?Ajax高级用法之Axios技术
Apr 21 Javascript
javascript checkbox/radio onchange不能兼容ie8处理办法
Jun 13 #Javascript
angularjs之$timeout指令详解
Jun 13 #Javascript
JS实现json的序列化和反序列化功能示例
Jun 13 #Javascript
angularjs实现搜索的关键字在正文中高亮出来
Jun 13 #Javascript
angular-ngSanitize模块-$sanitize服务详解
Jun 13 #Javascript
让微信小程序支持ES6中Promise特性的方法详解
Jun 13 #Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
Jun 13 #jQuery
You might like
使PHP自定义函数返回多个值
2006/11/26 PHP
实现php加速的eAccelerator dll支持文件打包下载
2007/09/30 PHP
Zend Framework框架Smarty扩展实现方法
2016/03/22 PHP
php结合mysql与mysqli扩展处理事务的方法
2016/06/29 PHP
php实现将HTML页面转换成word并且保存的方法
2016/10/14 PHP
php post json参数的传递和接收处理方法
2018/05/31 PHP
PHP写API输出的时用echo的原因详解
2019/04/28 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
2019/05/28 PHP
php命令行模式代码实例详解
2021/02/26 PHP
Jquery从头学起第四讲 jquery入门教程
2010/08/01 Javascript
javascript的内存管理详解
2013/08/07 Javascript
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
Javascript基础教程之break和continue语句
2015/01/18 Javascript
基于jQuery实现简单的折叠菜单效果
2015/11/23 Javascript
基于jquery实现下拉框美化特效
2016/02/02 Javascript
nodejs加密Crypto的实例代码
2016/07/07 NodeJs
JavaScript中 ES6 generator数据类型详解
2016/08/11 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
微信小程序调用PHP后台接口 解析纯html文本
2017/06/13 Javascript
详解wow.js中各种特效对应的类名
2017/09/13 Javascript
JAVA面试题 static关键字详解
2019/07/16 Javascript
Python数据类型之列表和元组的方法实例详解
2019/07/08 Python
Python中一个for循环循环多个变量的示例
2019/07/16 Python
Python流程控制 if else实现解析
2019/09/02 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
python读写Excel表格的实例代码(简单实用)
2019/12/19 Python
通过 Python 和 OpenCV 实现目标数量监控
2020/01/05 Python
selenium+python配置chrome浏览器的选项的实现
2020/03/18 Python
医学生实习自荐信
2013/10/01 职场文书
小学生评语大全
2014/04/18 职场文书
篮球兴趣小组活动总结
2014/07/07 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
2015年反腐倡廉工作总结
2015/05/14 职场文书
python热力图实现的完整实例
2022/06/25 Python