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 相关文章推荐
jquery与google map api结合使用 控件,监听器
Mar 04 Javascript
通过判断JavaScript的版本实现执行不同的代码
May 11 Javascript
jQuery选中select控件 无法设置selected的解决方法
Sep 01 Javascript
Query中click(),bind(),live(),delegate()的区别
Nov 19 Javascript
javascript中Array()数组函数详解
Aug 23 Javascript
js验证真实姓名与身份证号,手机号的简单实例
Jul 18 Javascript
Js得到radiobuttonlist选中值的两种方法(推荐)
Aug 25 Javascript
ionic实现滑动的三种方式
Aug 27 Javascript
前端框架Vue.js构建大型应用浅析
Sep 12 Javascript
Google 爬虫如何抓取 JavaScript 的内容
Apr 07 Javascript
express.js中间件说明详解
Mar 19 Javascript
基于vue实现web端超大数据量表格的卡顿解决
Apr 02 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 高手之路(二)
2006/10/09 PHP
javascript的对话框详解与参数
2007/03/08 Javascript
web页面数据展示新想法(json)
2010/06/08 Javascript
Js切换功能的简单方法
2010/11/23 Javascript
使用jquery实现图文切换效果另加特效
2013/01/20 Javascript
简单几行JS Code实现IE邮件转发新浪微博
2013/07/03 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
jquery ajax方式直接提交整个表单核心代码
2013/08/15 Javascript
如何设置一定时间内只能发送一次请求
2014/02/28 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
javascript事件绑定学习要点
2016/03/09 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
html判断当前页面是否在iframe中的实例
2016/11/30 Javascript
Vue.use源码分析
2017/04/22 Javascript
nodejs入门教程二:创建一个简单应用示例
2017/04/24 NodeJs
对vue中methods互相调用的方法详解
2018/08/30 Javascript
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
JS实现简易留言板(节点操作)
2020/03/16 Javascript
Quasar Input:type="number" 去掉上下小箭头 实现加减按钮样式功能
2020/04/09 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
[05:53]敌法师的金色冠名ID"BurNIng",是传说,是荣耀
2020/07/11 DOTA
Python写的创建文件夹自定义函数mkdir()
2014/08/25 Python
django 发送手机验证码的示例代码
2018/04/25 Python
通过 Django Pagination 实现简单分页功能
2019/11/11 Python
耐克亚太地区:Nike APAC
2019/12/07 全球购物
自我评价正确写法范文
2013/12/10 职场文书
《真想变成大大的荷叶》教学反思
2014/04/14 职场文书
马丁路德金演讲稿
2014/05/19 职场文书
在职党员进社区活动总结
2014/07/05 职场文书
2016年五一促销广告语
2016/01/28 职场文书
2019大学生实习报告
2019/06/21 职场文书
文明医院的标语集锦!
2019/07/24 职场文书
MySQL基础(一)
2021/04/05 MySQL
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python
python 判断字符串当中是否包含字符(str.contain)
2022/06/01 Python
MySQL 原理与优化之Update 优化
2022/08/14 MySQL