vue实现路由懒加载的3种方法示例


Posted in Javascript onSeptember 01, 2020

前言

路由懒加载在访问页面的时候非常重要,能够提高首页加载速度,避免出现加载时候白页,如果没有懒加载,webpack打包后的文件会非常大。

  • import按需加载(常用)
  • vue异步组件
  • webpack提供的require.ensure()

1、import按需加载(常用)

允许将不同的组件打包到一个异步块中,需指定了相同的webpackChunkName。

把组件按组分块

const A = () => import(/* webpackChunkName: "group-A" */ '@/A/A.vue')
const B = () => import(/* webpackChunkName: "group-A" */ '@/A/B.vue')
const C = () => import(/* webpackChunkName: "group-A" */ '@/A/C.vue')

注意:如果使用的是 babel,需要安装syntax-dynamic-import插件,才能使 babel 可以正确地解析语法。

2、vue异步组件

使用vue的异步组件 , 实现按需加载,每个组件生成一个js文件,实现组件的懒加载。

/* vue异步组件 */
{ path: '/A', name: 'A', component: resolve => require(['@/components/A'],resolve) }

3、webpack提供的require.ensure()

vue-router配置路由,使用webpack的require.ensure技术,实现按需加载。

这种情况下,多个路由指定相同的chunkName,会合并打包成一个js文件。

语法: require.ensure(dependencies: String[], callback: function([require]), [chunkName: String])

dependencies: 依赖的模块数组

callback: 回调函数,该函数调用时会传一个require参数

chunkName: 模块名,用于构建时生成文件时命名使用

const A= resolve => require.ensure([], () => resolve(require('@/components/A')), 'A');

注意:requi.ensure的模块只会被下载下来,不会被执行,只有在回调函数使用require(模块名)后,这个模块才会被执行。

总结

到此这篇关于vue实现路由懒加载的3种方法示例的文章就介绍到这了,更多相关vue路由懒加载内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
面向对象的Javascript之三(封装和信息隐藏)
Jan 27 Javascript
Jquery提交表单 Form.js官方插件介绍
Mar 01 Javascript
再谈javascript面向对象编程
Mar 18 Javascript
jquery选择器之内容过滤选择器详解
Jan 27 Javascript
js实现的点击div区域外隐藏div区域
Jun 30 Javascript
函数window.open实现关闭所有的子窗口
Aug 03 Javascript
jQuery正则验证注册页面经典实例
Jun 10 jQuery
详解JS中的this、apply、call、bind(经典面试题)
Sep 19 Javascript
浅谈Vue.set实际上是什么
Oct 17 Javascript
JS实现音量控制拖动
Jan 15 Javascript
搭建vscode+vue环境的详细教程
Aug 31 Javascript
使用webpack和rollup打包组件库的方法
Feb 25 Javascript
JQuery使用数组遍历跳出each循环
Sep 01 #jQuery
vue+echarts实现动态折线图的方法与注意
Sep 01 #Javascript
node.js 如何监视文件变化
Sep 01 #Javascript
JS JQuery获取data-*属性值方法解析
Sep 01 #jQuery
谈谈node.js中的模块系统
Sep 01 #Javascript
JavaScript浅层克隆与深度克隆示例详解
Sep 01 #Javascript
VUE子组件向父组件传值详解(含传多值及添加额外参数场景)
Sep 01 #Javascript
You might like
ADODB的数据库封包程序库
2006/12/31 PHP
php xml文件操作代码(一)
2009/03/20 PHP
深入PHP empty(),isset(),is_null()的实例测试详解
2013/06/06 PHP
PHP抓取网页、解析HTML常用的方法总结
2015/07/01 PHP
php过滤所有的空白字符(空格、全角空格、换行等)
2015/10/27 PHP
PHP中实现中文字串截取无乱码的解决方法
2018/05/29 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
2019/07/03 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
JS图片无缝滚动(简单利于使用)
2013/06/17 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
2014/10/16 Javascript
7个让JavaScript变得更好的注意事项
2015/01/28 Javascript
jQuery编程中的一些核心方法简介
2015/08/14 Javascript
非常实用的12个jquery代码片段
2015/11/02 Javascript
详解jQuery选择器
2016/12/21 Javascript
JS控制鼠标拒绝点击某一按钮的实例
2017/12/29 Javascript
Vue绑定内联样式问题
2018/10/17 Javascript
使用typescript改造koa开发框架的实现
2020/02/04 Javascript
ant design vue datepicker日期选择器中文化操作
2020/10/28 Javascript
Python性能优化技巧
2015/03/09 Python
python实现的系统实用log类实例
2015/06/30 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
对Django外键关系的描述
2019/07/26 Python
Python解析json时提示“string indices must be integers”问题解决方法
2019/07/31 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
2020/06/17 Python
Python常用数据分析模块原理解析
2020/07/20 Python
eBay法国购物网站:eBay.fr
2017/10/21 全球购物
请写出 float x 与"零值"比较的 if 语句
2016/01/04 面试题
Linux文件操作命令都有哪些
2015/02/27 面试题
经济学博士求职自荐信范文
2013/11/23 职场文书
冬季安全检查方案
2014/05/23 职场文书
旷课检讨书
2015/01/26 职场文书
辞职信范文大全
2015/03/02 职场文书
2015年度招聘工作总结
2015/05/28 职场文书
游戏《铁拳》动画化!2022年年内播出
2022/03/21 日漫