详解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 相关文章推荐
js版本A*寻路算法
Dec 22 Javascript
一个javascript图片阅览组件
Nov 09 Javascript
关于IE中getElementsByClassName不能用的问题解决方法
Aug 26 Javascript
Jquery Uploadify上传带进度条的简单实例
Feb 12 Javascript
JavaScript编程的10个实用小技巧
Apr 18 Javascript
chrome下jq width()方法取值为0的解决方法
May 26 Javascript
原生js与jQuery实现简单的tab切换特效对比
Jul 30 Javascript
详解jquery和vue对比
Apr 16 jQuery
详解vue-cli+element-ui树形表格(多级表格折腾小计)
Apr 17 Javascript
微信小程序登录对接Django后端实现JWT方式验证登录详解
Jul 29 Javascript
浅谈vue.watch的触发条件是什么
Nov 07 Javascript
jQuery实现增删改查
Dec 22 jQuery
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 静态化实现代码
2009/03/20 PHP
php版小黄鸡simsimi聊天机器人接口分享
2014/01/26 PHP
PHP进程同步代码实例
2015/02/12 PHP
PHP获取页面执行时间的方法(推荐)
2016/12/10 PHP
详解Yii2.0 rules验证规则集合
2017/03/21 PHP
用于判断用户注册时,密码强度的JS代码
2009/01/01 Javascript
javascript与cookie 的问题详解
2013/11/11 Javascript
使用jQuery异步加载 JavaScript脚本解决方案
2014/04/20 Javascript
js 模式窗口(模式对话框和非模式对话框)的使用介绍
2014/07/17 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
纯JavaScript代码实现文本比较工具
2016/02/17 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
2017/08/28 Javascript
swiper移动端轮播插件(触碰图片之后停止轮播)
2017/12/28 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
2018/04/26 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
2018/05/04 Javascript
vue的三种图片引入方式代码实例
2019/11/19 Javascript
Echarts实现单条折线可拖拽效果
2019/12/19 Javascript
使用Python导出Excel图表以及导出为图片的方法
2015/11/07 Python
对python数据切割归并算法的实例讲解
2018/12/12 Python
Python 使用PyQt5 完成选择文件或目录的对话框方法
2019/06/27 Python
pandas的qcut()方法详解
2019/07/06 Python
Django Rest framework权限的详细用法
2019/07/25 Python
django的model操作汇整详解
2019/07/26 Python
Flask框架路由和视图用法实例分析
2019/11/07 Python
python目标检测给图画框,bbox画到图上并保存案例
2020/03/10 Python
Python实现图片指定位置加图片水印(附Pyinstaller打包exe)
2021/03/04 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
静态成员和非静态成员的区别
2012/05/12 面试题
关于母亲节的感言
2014/02/04 职场文书
《落花生》教学反思
2014/02/25 职场文书
家长会演讲稿
2014/04/26 职场文书
离婚协议书范本(通用篇)
2014/11/30 职场文书
纪委立案决定书
2015/06/24 职场文书
如何使用SQL Server语句创建表
2022/04/12 SQL Server
Python实现简单得递归下降Parser
2022/05/02 Python