详解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 相关文章推荐
JQuery实现自定义对话框的代码
Jun 15 Javascript
jquery蒙版控件实现代码
Dec 08 Javascript
jQuery .tmpl(), .template()学习资料小结
Jul 18 Javascript
jQuery .tmpl() 用法示例介绍
Aug 21 Javascript
jQuery中first()方法用法实例
Jan 06 Javascript
Javascript控制div属性动态变化实例分析
Oct 08 Javascript
js过滤HTML标签完整实例
Nov 26 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
Jan 26 Javascript
Node.js的Express框架使用上手指南
Mar 12 Javascript
JavaScript中removeChild 方法开发示例代码
Aug 15 Javascript
对Angular中单向数据流的深入理解
Mar 31 Javascript
layer实现弹出层自动调节位置
Sep 05 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将数组转换成csv格式文件输出的方法
2015/03/14 PHP
php实现的Curl封装类Curl.class.php用法实例分析
2015/09/25 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
2017/03/14 PHP
PHP扩展mcrypt实现的AES加密功能示例
2019/01/29 PHP
tp5框架使用cookie加密算法实现登录功能示例
2020/02/10 PHP
PHP 8新特性简介
2020/08/18 PHP
JS实现的省份级联实例代码
2013/06/24 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
2016/03/07 Javascript
bootstrap导航条实现代码
2016/12/28 Javascript
Bootstrap选项卡学习笔记分享
2017/02/13 Javascript
深入浅析Node.js单线程模型
2017/07/10 Javascript
nodejs前端自动化构建环境的搭建
2017/07/26 NodeJs
[01:03:54]Liquid vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[58:00]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant BO3 第二场 2月7日
2021/03/11 DOTA
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
2017/07/12 Python
Python3实现转换Image图片格式
2018/06/21 Python
Python多线程原理与用法详解
2018/08/20 Python
python绘制地震散点图
2019/06/18 Python
Python绘图Matplotlib之坐标轴及刻度总结
2019/06/28 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
Python帮你识破双11的套路
2019/11/11 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
几款Python编译器比较与推荐(小结)
2020/10/15 Python
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
荷兰优雅女装网上商店:Heine
2016/11/14 全球购物
澳大利亚宠物商店:Petbarn
2017/11/18 全球购物
What is EJB
2016/07/22 面试题
超市后勤自我鉴定
2014/01/17 职场文书
临时租车协议范本
2014/09/23 职场文书
2014政府领导班子对照检查材料思想汇报(3篇)
2014/09/26 职场文书
初中生毕业评语
2014/12/29 职场文书
2015年政务公开工作总结
2015/05/19 职场文书
python实战之一步一步教你绘制小猪佩奇
2021/04/22 Python
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫
Python实现Matplotlib,Seaborn动态数据图
2022/05/06 Python
人工智能深度学习OpenAI baselines的使用方法
2022/05/20 Python