Vue代码分割懒加载的实现方法


Posted in Javascript onNovember 23, 2017

什么是懒加载

懒加载也叫延迟加载,即在需要的时候进行加载,随用随载。

为什么需要懒加载

在单页应用中,如果没有应用懒加载,运用webpack打包后的文件将会异常的大,造成进入首页时,需要加载的内容过多,延时过长,不利于用户体验,而运用懒加载则可以将页面进行划分,需要的时候加载页面,可以有效的分担首页所承担的加载压力,减少首页加载用时

如何与webpack配合实现组件懒加载

1、在webpack配置文件中的output路径配置chunkFilename属性

output: {
path: resolve(__dirname, 'dist'),
filename: options.dev ? '[name].js' : '[name].js?[chunkhash]',
chunkFilename: 'chunk[id].js?[chunkhash]',
publicPath: options.dev ? '/assets/' : publicPath
},

chunkFilename路径将会作为组件懒加载的路径

2、配合webpack支持的异步加载方法

  • resolve => require([URL], resolve), 支持性好
  • () => system.import(URL) , webpack2官网上已经声明将逐渐废除, 不推荐使用
  • () => import(URL), webpack2官网推荐使用, 属于es7范畴, 需要配合babel的syntax-dynamic-import插件使用, 具体使用方法如下
npm install --save-dev babel-core babel-loader babel-plugin-syntax-dynamic-import babel-preset-es2015
use: [{
loader: 'babel-loader',
options: {
presets: [['es2015', {modules: false}]],
plugins: ['syntax-dynamic-import']
}
}]

引言

而在webpack > 2的时代,vue做代码分割懒加载更加的easy,不需要loader,不需要require.ensure。

import解决一切。

分割层级

Vue代码分割懒加载包含如下几个层级:

      1、 组件层级分割懒加载

      2、 router路由层级

      3、 Vuex 模块

组件层级代码分割

//全局组件
Vue.component('AsyncComponent', () => import('./AsyncComponent'))

//局部注册组件
new Vue({
 // ...
 components: {
 'AsyncComponent': () => import('./AsyncComponent')
 }
})

// 如果不是default导出的模块
new Vue({
 // ...
 components: {
 'AsyncComponent': () => import('./AsyncComponent').then({ AsyncComponent }) => AsyncComponent
 }
})

路由层级代码分割

const AsyncComponent= () => import('./AsyncComponent')

new VueRouter({
 routes: [
 { path: '/test', component: AsyncComponent}
 ]
})

Vuex 模块代码分割,vuex中有动态注册模块方法,同时也是加上import

const store = new Vuex.Store()

import('./store/test').then(testModule => {
 store.registerModule('test', testModule)
})

总结

在一般项目中,我们按照router和components层面分割(或者只使用router分割)就足够了。大型项目可能三者都会用到,但用法都很简单,不是么?

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JavaScript插入动态样式实现代码
Feb 22 Javascript
js里怎么取select标签里的值并修改
Dec 10 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
Mar 18 Javascript
jQuery对象与DOM对象转换方法详解
May 10 Javascript
JS实现数组去重复值的方法示例
Feb 18 Javascript
jQuery插件FusionCharts实现的2D面积图效果示例【附demo源码下载】
Mar 06 Javascript
Angularjs 1.3 中的$parse实例代码
Sep 14 Javascript
vue中路由参数传递可能会遇到的坑
Dec 07 Javascript
vue刷新和tab切换实例
Feb 11 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
May 12 Javascript
react中Suspense的使用详解
Sep 01 Javascript
JavaScript声明变量和数据类型的转换
Apr 12 Javascript
初探js和简单隐藏效果的实例
Nov 23 #Javascript
详解如何在angular2中获取节点
Nov 23 #Javascript
Vuejs中使用markdown服务器端渲染的示例
Nov 22 #Javascript
浅谈Vue-cli 命令行工具分析
Nov 22 #Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
Nov 22 #Javascript
深入理解Vue官方文档梳理之全局API
Nov 22 #Javascript
初识 Vue.js 中的 *.Vue文件
Nov 22 #Javascript
You might like
PHP 中执行排序与 MySQL 中排序
2009/04/21 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
JavaScript脚本语言在网页中的简单应用
2007/05/13 Javascript
JQuery UI DatePicker中z-index默认为1的解决办法
2010/09/28 Javascript
全面兼容的javascript时间格式化函数(比较实用)
2014/05/14 Javascript
Js制作点击输入框时默认文字消失的效果
2015/09/05 Javascript
jQuery插件Validate实现自定义校验结果样式
2016/01/18 Javascript
jQuery事件处理的特征(事件命名机制)
2016/08/23 Javascript
Bootstrap3 图片(响应式图片&图片形状)
2017/01/04 Javascript
jQuery层级选择器实例代码
2017/02/06 Javascript
微信小程序 后台登录(非微信账号)实例详解
2017/03/31 Javascript
微信小程序实现下拉刷新和轮播图效果
2017/11/21 Javascript
js与jQuery实现获取table中的数据并拼成json字符串操作示例
2018/07/12 jQuery
vue升级之路之vue-router的使用教程
2018/08/14 Javascript
新手快速入门JavaScript装饰者模式与AOP
2019/06/24 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
深入解读VUE中的异步渲染的实现
2020/06/19 Javascript
[51:07]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python监控网站运行异常并发送邮件的方法
2015/03/13 Python
深入解析Python中的WSGI接口
2015/05/11 Python
Python运算符重载用法实例分析
2015/06/01 Python
Python使用Phantomjs截屏网页的方法
2018/05/17 Python
python实现爬山算法的思路详解
2019/04/09 Python
python3实现的zip格式压缩文件夹操作示例
2019/08/17 Python
选购国际女性时装设计师品牌:IFCHIC(支持中文)
2018/04/12 全球购物
Linux机考试题
2015/10/16 面试题
党员的自我评价范文
2014/01/02 职场文书
闭幕式主持词
2014/04/02 职场文书
岗位竞聘报告范文
2014/11/06 职场文书
委托证明范本
2014/11/25 职场文书
夫妻吵架保证书
2015/05/08 职场文书
2015小学教师年度考核工作总结
2015/05/12 职场文书
婚庆答谢词大全
2015/09/29 职场文书
创业不要错过,这4种餐饮新模式
2019/07/18 职场文书
JavaScript高级程序设计之变量与作用域
2021/11/17 Javascript
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript