详解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 相关文章推荐
精选的10款用于构建良好易用性网站的jQuery插件
Jan 23 Javascript
javascript 使用 NodeList需要注意的问题
Mar 04 Javascript
JS简单实现文件上传实例代码(无需插件)
Nov 15 Javascript
我的Node.js学习之路(四)--单元测试
Jul 06 Javascript
JavaScript小技巧整理篇(非常全)
Jan 26 Javascript
jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)
May 16 Javascript
AngularJS包括详解及示例代码
Aug 17 Javascript
JavaScript设计模式之策略模式详解
Jun 09 Javascript
使用veloticy-ui生成文字动画效果
Feb 08 Javascript
centos 上快速搭建ghost博客方法分享
May 23 Javascript
js中split()方法得到的数组长度问题
Jul 19 Javascript
微信小程序自定义底部弹出框动画
Nov 18 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
对javascript和select部件的结合运用
2006/10/09 PHP
8个出色的WordPress SEO插件收集
2011/02/26 PHP
PHP文件缓存内容保存格式实例分析
2014/08/20 PHP
Yii rules常用规则示例
2016/03/15 PHP
JavaScript中的私有成员
2006/09/18 Javascript
JS自动适应的图片弹窗实例
2013/06/29 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
angular简介和其特点介绍
2015/01/29 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
2016/06/12 Javascript
jQuery如何获取动态添加的元素
2016/06/24 Javascript
jquery validation验证表单插件
2017/01/07 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
2017/02/15 Javascript
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
Tornado服务器中绑定域名、虚拟主机的方法
2014/08/22 Python
python检查指定文件是否存在的方法
2015/07/06 Python
Python2.x利用commands模块执行Linux shell命令
2016/03/11 Python
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
Python3爬虫使用Fidder实现APP爬取示例
2018/11/27 Python
Python实现的删除重复文件或图片功能示例【去重】
2019/04/23 Python
numpy中的ndarray方法和属性详解
2019/05/27 Python
pyqt 实现在Widgets中显示图片和文字的方法
2019/06/13 Python
Python 日志logging模块用法简单示例
2019/10/18 Python
Pytorch之finetune使用详解
2020/01/18 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
keras中的loss、optimizer、metrics用法
2020/06/15 Python
CentOS 7如何实现定时执行python脚本
2020/06/24 Python
Python如何定义接口和抽象类
2020/07/28 Python
如何在Win10系统使用Python3连接Hive
2020/10/15 Python
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
机械个人求职信范文
2014/01/24 职场文书
公司合作意向书
2014/04/01 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
红色经典电影观后感
2015/06/18 职场文书
html5移动端禁止长按图片保存的实现
2021/04/20 HTML / CSS
Mysql MVCC机制原理详解
2021/04/20 MySQL
mysql sum(if())和count(if())的用法说明
2022/01/18 MySQL