详解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 相关文章推荐
Javascript实现CheckBox的全选与取消全选的代码
Jul 20 Javascript
基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)
Jul 26 Javascript
js 遍历对象的属性的代码
Dec 29 Javascript
EasyUI实现二级页面的内容勾选的方法
Mar 01 Javascript
jQuery中animate用法实例分析
Mar 09 Javascript
jquery实现向下滑出的二级导航下滑菜单效果
Aug 25 Javascript
Ztree新增角色和编辑角色回显问题的解决
Oct 25 Javascript
给easyui datebox扩展一个清空的实例
Nov 09 Javascript
Vue学习笔记进阶篇之单元素过度
Jul 19 Javascript
JavaScript模板引擎原理与用法详解
Dec 24 Javascript
vue-父子组件和ref实例详解
Nov 10 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
php数据库连接时容易出错的特殊符号问题
2010/09/01 PHP
php读取csv实现csv文件下载功能
2013/12/18 PHP
php获取数据库中数据的实现方法
2017/06/01 PHP
国外Lightbox v2.03.3 最新版 下载
2007/10/17 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
2013/12/04 Javascript
JavaScript模拟实现继承的方法
2015/03/30 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
2015/06/04 Javascript
全面解析Bootstrap表单样式的使用
2016/09/09 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
2016/11/03 Javascript
怎样判断jQuery当前元素是隐藏还是显示
2016/11/23 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
Vue中如何实现轮播图的示例代码
2017/07/27 Javascript
iphone刘海屏页面适配方法
2019/05/07 Javascript
js 闭包深入理解与实例分析
2020/03/19 Javascript
Vue CLI3移动端适配(px2rem或postcss-plugin-px2rem)
2020/04/27 Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
2020/08/13 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
python字符串加密解密的三种方法分享(base64 win32com)
2014/01/19 Python
python中日期和时间格式化输出的方法小结
2015/03/19 Python
Python实现定时执行任务的三种方式简单示例
2019/03/30 Python
Python3并发写文件与Python对比
2019/11/20 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
2020/04/22 Python
Python实现王者荣耀自动刷金币的完整步骤
2021/01/22 Python
CSS3中使用RGBA设置透明度的示例
2015/08/04 HTML / CSS
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
草莓网中国:StrawberryNet中国
2020/08/17 全球购物
请介绍一下Ant
2016/07/22 面试题
电子信息专业学生自荐信
2013/11/09 职场文书
毕业生个人求职信范例分享
2013/12/17 职场文书
预备党员群众路线思想汇报2014
2014/10/25 职场文书
小学工作总结2015
2015/05/04 职场文书
困难补助申请报告
2015/05/19 职场文书
企业安全生产规章制度
2015/08/06 职场文书
JS 基本概念详细介绍
2021/10/16 Javascript