详解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 相关文章推荐
JavaScript asp.net 获取当前超链接中的文本
Apr 14 Javascript
用Javascript实现锚点(Anchor)间平滑跳转
Sep 08 Javascript
动态调用CSS文件的JS代码
Jul 29 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
Dec 17 Javascript
jQuery中data()方法用法实例
Dec 27 Javascript
JavaScript设计模式之单件模式介绍
Dec 28 Javascript
一篇文章掌握RequireJS常用知识
Jan 26 Javascript
javascript加减乘除的简单实例
Jul 12 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
Aug 04 Javascript
原生JS实现$.param() 函数的方法
Aug 10 Javascript
ng-events类似ionic中Events的angular全局事件
Sep 05 Javascript
js轮播图之旋转木马效果
Oct 13 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实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
php实现倒计时效果
2015/12/19 PHP
php根据数据id自动生成编号的实现方法
2016/10/16 PHP
PHP Header失效的原因分析及解决方法
2016/11/16 PHP
php变量与数组相互转换的方法(extract与compact)
2016/12/02 PHP
JavaScript中获取纯正的undefined的方法
2016/03/06 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
2017/08/11 Javascript
浅谈node的事件机制
2017/10/09 Javascript
Vue2 轮播图slide组件实例代码
2018/05/31 Javascript
JavaScript文本特效实例小结【3个示例】
2018/12/22 Javascript
p5.js实现故宫橘猫赏秋图动画
2019/10/23 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
[01:10]DOTA2亚洲邀请赛 征战号角响彻全场
2015/01/06 DOTA
python使用rabbitmq实现网络爬虫示例
2014/02/20 Python
Python中使用strip()方法删除字符串中空格的教程
2015/05/20 Python
自己编程中遇到的Python错误和解决方法汇总整理
2015/06/03 Python
python获取当前运行函数名称的方法实例代码
2017/04/06 Python
Python使用Matplotlib实现雨点图动画效果的方法
2017/12/23 Python
pyQt4实现俄罗斯方块游戏
2018/06/26 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
2019/03/30 Python
pyqt5 从本地选择图片 并显示在label上的实例
2019/06/13 Python
python飞机大战pygame游戏背景设计详解
2019/12/17 Python
python 连续不等式语法糖实例
2020/04/15 Python
jupyter 使用Pillow包显示图像时inline显示方式
2020/04/24 Python
Django DRF认证组件流程实现原理详解
2020/08/17 Python
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
英国泰坦旅游网站:全球陪同游览,邮轮和铁路旅行
2016/11/29 全球购物
联想加拿大官方网站:Lenovo Canada
2018/04/05 全球购物
新闻记者实习自我鉴定
2013/09/19 职场文书
怎么样写好简历中的自我评价
2013/10/25 职场文书
初三学习决心书
2014/03/11 职场文书
大专生找工作自荐书
2014/06/10 职场文书
党员自我剖析材料
2014/08/31 职场文书
颐和园的导游词
2015/01/30 职场文书
致青春观后感
2015/06/09 职场文书