详解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 相关文章推荐
ASP小贴士/ASP Tips javascript tips可以当桌面
Dec 10 Javascript
初试jQuery EasyUI 使用介绍
Apr 01 Javascript
iphone safari不支持position fixed的解决方法
May 04 Javascript
解析js原生方法创建表格效率测试
Jul 08 Javascript
js如何获取object类型里的键值
Feb 18 Javascript
javaScript基础语法介绍
Feb 28 Javascript
JavaScript中getUTCMinutes()方法的使用详解
Jun 10 Javascript
每天一篇javascript学习小结(面向对象编程)
Nov 20 Javascript
JS冒泡事件与事件捕获实例详解
Nov 25 Javascript
uni-app实现点赞评论功能
Nov 25 Javascript
ElementUI 修改默认样式的几种办法(小结)
Jul 29 Javascript
如何使用原生Js实现随机点名详解
Jan 06 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
CPU步进是什么意思?i3-9100F B0步进和U0步进区别知识科普
2020/03/17 数码科技
终于听上了直流胆调频
2021/03/02 无线电
php判断访问IP的方法
2015/06/19 PHP
php版微信开发之接收消息,自动判断及回复相应消息的方法
2016/09/23 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
静态的动态续篇之来点XML
2006/12/23 Javascript
五个jQuery图片画廊插件 推荐
2011/05/12 Javascript
《JavaScript高级程序设计》阅读笔记(一) ECMAScript基础
2012/02/27 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
JS中图片压缩的方法小结
2017/11/14 Javascript
vue-cli项目中使用Mockjs详解
2018/05/14 Javascript
结合Vue控制字符和字节的显示个数的示例
2018/05/17 Javascript
使用proxy实现一个更优雅的vue【推荐】
2018/06/19 Javascript
详解Vue iview IE浏览器不兼容报错(Iview Bable polyfill)
2019/01/07 Javascript
layer弹出层倒计时关闭的实现方法
2019/09/27 Javascript
解决vue组件中click事件失效的问题
2019/11/09 Javascript
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
浅谈vue单页面中有多个echarts图表时的公用代码写法
2020/07/19 Javascript
vue实现虚拟列表功能的代码
2020/07/28 Javascript
js实现验证码干扰(动态)
2021/02/23 Javascript
对于Python中线程问题的简单讲解
2015/04/03 Python
Python 创建子进程模块subprocess详解
2015/04/08 Python
Python中的rjust()方法使用详解
2015/05/19 Python
django开发教程之利用缓存文件进行页面缓存的方法
2017/11/10 Python
python获取命令行输入参数列表的实例代码
2018/06/23 Python
Python机器学习库scikit-learn安装与基本使用教程
2018/06/25 Python
记一次python 内存泄漏问题及解决过程
2018/11/29 Python
python数据类型之间怎么转换技巧分享
2019/08/20 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
Python图像处理库PIL的ImageFont模块使用介绍
2020/02/26 Python
小型女装店的创业计划书
2014/01/09 职场文书
学校联谊活动方案
2014/02/15 职场文书
广告艺术设计专业自荐书
2014/07/08 职场文书
成人成长感言如何写?
2019/08/16 职场文书
vue.js 使用原生js实现轮播图
2022/04/26 Vue.js
Vue3实现简易音乐播放器组件
2022/08/14 Vue.js