详解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 相关文章推荐
用Div仿showModalDialog模式菜单的效果的代码
Mar 05 Javascript
jQuery判断iframe中元素是否存在的方法
May 11 Javascript
用js格式化金额可设置保留的小数位数
May 09 Javascript
js实现上传图片预览的方法
Feb 09 Javascript
JS中的==运算: [''] == false —>true
Jul 24 Javascript
详解Angular.js数据绑定时自动转义html标签及内容
Mar 30 Javascript
vue中七牛插件使用的实例代码
Jul 28 Javascript
用React实现一个完整的TodoList的示例代码
Oct 30 Javascript
详解js 创建对象的几种方法
Mar 08 Javascript
微信小程序select下拉框实现效果
May 15 Javascript
通过实践编写优雅的JavaScript代码
May 30 Javascript
vue中注册自定义的全局js方法
Nov 15 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
基于mysql的论坛(7)
2006/10/09 PHP
利用php实现禁用IE和火狐的缓存问题
2012/12/03 PHP
ajax返回值中有回车换行、空格的解决方法分享
2013/10/24 PHP
php防止网站被刷新的方法汇总
2014/12/01 PHP
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
2009/10/20 Javascript
Html中JS脚本执行顺序简单举例说明
2010/06/19 Javascript
获取select元素被选中的文本内容的js代码
2014/01/29 Javascript
告诉你什么是javascript的回调函数
2014/09/04 Javascript
jQuery中noconflict函数的实现原理分解
2015/02/03 Javascript
JQuery中ajax方法访问web服务实例
2015/07/18 Javascript
前端框架Vue.js构建大型应用浅析
2016/09/12 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
JavaScript实现经典排序算法之选择排序
2016/12/28 Javascript
node.js中express中间件body-parser的介绍与用法详解
2017/05/23 Javascript
Bootstrap fileinput文件上传组件使用详解
2017/06/06 Javascript
JS中Promise函数then的奥秘探究
2018/07/30 Javascript
jQuery实现的导航条点击后高亮显示功能示例
2019/03/04 jQuery
使用Jenkins部署React项目的方法步骤
2019/03/11 Javascript
[03:16]DOTA2完美大师赛主赛事首日集锦
2017/11/23 DOTA
在Python中使用mongoengine操作MongoDB教程
2015/04/24 Python
Python操作MySQL数据库9个实用实例
2015/12/11 Python
python+os根据文件名自动生成文本
2019/03/21 Python
Python监听剪切板实现方法代码实例
2020/11/11 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
详解css3中的伪类before和after常见用法
2020/11/17 HTML / CSS
linux面试题参考答案(8)
2016/04/19 面试题
给老师的道歉信
2014/01/11 职场文书
2014自主招生自荐信策略
2014/01/27 职场文书
社区班子个人对照检查材料思想汇报
2014/10/07 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
目标责任书格式范文
2015/05/11 职场文书
党支部培养考察意见
2015/06/02 职场文书
瞿秋白纪念馆观后感
2015/06/10 职场文书
2016国培研修心得体会
2016/01/08 职场文书
残联2016年全国助残日活动总结
2016/04/01 职场文书
php 防护xss,PHP的防御XSS注入的终极解决方案
2021/04/01 PHP