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 相关文章推荐
date.parse在IE和FF中的区别
Jul 29 Javascript
Extjs NumberField后面加单位实现思路
Jul 30 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
Dec 05 Javascript
AngularJS 中文API参考手册
Jul 28 Javascript
JavaScript数据类型转换的注意事项
Jul 31 Javascript
JavaScript获取短信验证码(周期性)
Dec 29 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
Dec 24 Javascript
layerUI下的绑定事件实例代码
Aug 17 Javascript
解决ng-repeat产生的ng-model中取不到值的问题
Oct 02 Javascript
JS学习笔记之闭包小案例分析
May 29 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
Sep 12 Javascript
JavaScript原型式继承实现方法
Nov 06 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
这部番真是良心,画质好到像风景区,剧情让人跟着小公会热血沸腾
2020/03/10 日漫
微信 开发生成带参数的二维码的实例
2016/11/23 PHP
你真的了解JavaScript吗?
2007/02/24 Javascript
JQuery的ajax获取数据后的处理总结(html,xml,json)
2010/07/14 Javascript
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
2011/09/26 Javascript
javaScript arguments 对象使用介绍
2013/10/18 Javascript
一个JavaScript用逗号分割字符串实例
2014/09/22 Javascript
jQuery实现跨域
2015/02/03 Javascript
JS选中checkbox后获取table内一行TD所有数据的方法
2015/07/01 Javascript
详解Node.js如何开发命令行工具
2016/08/14 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
JS变量及其作用域
2017/03/29 Javascript
解决vue+webpack打包路径的问题
2018/03/06 Javascript
通过cordova将vue项目打包为webapp的方法
2019/02/02 Javascript
微信小程序wx.request的简单封装
2019/11/13 Javascript
微信小程序自定义tabBar的踩坑实践记录
2020/11/06 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
微信小程序tab左右滑动切换功能的实现代码
2021/02/08 Javascript
用python找出那些被“标记”的照片
2017/04/20 Python
python WindowsError的错误代码详解
2017/07/23 Python
使用python脚本实现查询火车票工具
2018/07/19 Python
python主线程与子线程的结束顺序实例解析
2019/12/17 Python
Python datetime 格式化 明天,昨天实例
2020/03/02 Python
python tqdm实现进度条的示例代码
2020/11/10 Python
pycharm进入时每次都是insert模式的解决方式
2021/02/05 Python
家乐福巴西网上超市:Carrefour巴西
2016/10/31 全球购物
全球最大的服务市场:Fiverr
2017/01/03 全球购物
玛蒂尔达简服装:Matilda Jane Clothing
2019/02/13 全球购物
Puma印度官网:德国运动品牌
2019/10/06 全球购物
大学新学期计划书
2014/04/28 职场文书
保护黄河倡议书
2014/05/16 职场文书
安全标语大全
2014/06/10 职场文书
离婚协议书标准格式
2014/10/04 职场文书
交警失职检讨书
2015/01/26 职场文书
幼儿园教师心得体会范文
2016/01/21 职场文书
关于vue中如何监听数组变化
2021/04/28 Vue.js