解析vue路由异步组件和懒加载案例


Posted in Javascript onJune 08, 2018

最近研究了vue性能优化,涉及到vue异步组件和懒加载。一番研究得出如下的解决方案。

原理:利用webpack对代码进行分割是懒加载的前提,懒加载就是异步调用组件,需要时候才下载。

案例:

首先是组件,创建四个组件分别命名为first、second、three和four;内容如下

first

<template> 

<div>我是第一个页面</div> 

</template>

 

second

<template> 

<div>我是第二个页面</div> 

</template>

 

three

<template> 

<div>我是第三个页面</div> 

</template>

four
<template> 
<div>我是第四个页面</div> 
</template>

路由index.js代码,异步组件方式有两种,代码中的方案1和方案2;注意:方案1需要添加syntax-dynamic-import插件

import Vue from 'vue'

import VueRouter from 'vue-router'

/*import First from '@/components/First' 

import Second from '@/components/Second'*/

  

Vue.use(VueRouter) 

//方案1

const first =()=>import(/* webpackChunkName: "group-foo" */ "../components/first.vue");

const second = ()=>import(/* webpackChunkName: "group-foo" */ "../components/second.vue");

const three = ()=>import(/* webpackChunkName: "group-fooo" */ "../components/three.vue");

const four = ()=>import(/* webpackChunkName: "group-fooo" */ "../components/four.vue");

//方案2

const first = r => require.ensure([], () => r(require('../components/first.vue')), 'chunkname1')

const second = r => require.ensure([], () => r(require('../components/second.vue')), 'chunkname1')

const three = r => require.ensure([], () => r(require('../components/three.vue')), 'chunkname2')

const four = r => require.ensure([], () => r(require('../components/four.vue')), 'chunkname2')

 

//懒加载路由 

const routes = [ 

 {  //当首次进入页面时,页面没有显示任何组件;让页面一加载进来就默认显示first页面 

 path:'/', //重定向,就是给它重新指定一个方向,加载一个组件; 

 component:first 

 }, 

 { 

 path:'/first', 

 component:first

 }, 

 { 

 path:'/second', 

 component:second

 }, { 

 path:'/three', 

 component:three

 }, 

 { 

 path:'/four', 

 component:four

 } 

//这里require组件路径根据自己的配置引入 

] 

//最后创建router 对路由进行管理,它是由构造函数 new vueRouter() 创建,接受routes 参数。 

  

 const router = new VueRouter({ 

 routes 

}) 
export default router;

最后,如果想要让build之后的代码更便于识别,配置webpack代码

解析vue路由异步组件和懒加载案例

运行 npm run build结果

解析vue路由异步组件和懒加载案例

注意方案1和方案2只能用一个。然后运行项目试验一下就可以了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Mootools 1.2教程 正则表达式
Sep 15 Javascript
javascript full screen 全屏显示页面元素的方法
Sep 27 Javascript
解析Javascript中难以理解的11个问题
Dec 09 Javascript
100个不能错过的实用JS自定义函数
Mar 05 Javascript
JavaScript实现窗口抖动效果
Oct 19 Javascript
BootStrap组件之进度条的基本用法
Jan 19 Javascript
详解vue的数据binding绑定原理
Apr 12 Javascript
微信小程序网络请求wx.request详解及实例
May 18 Javascript
Vue2.0用户权限控制解决方案
Nov 29 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
Dec 25 Javascript
详解一次Vue低版本安卓白屏问题的解决过程
May 30 Javascript
js设置默认时间跨度过程详解
Jul 17 Javascript
node中modules.exports与exports导出的区别
Jun 08 #Javascript
Vue不能观察到数组length的变化
Jun 08 #Javascript
Node.js中的child_process模块详解
Jun 08 #Javascript
详解使用 Node.js 开发简单的脚手架工具
Jun 08 #Javascript
使用JavaScript生成罗马字符的实例代码
Jun 08 #Javascript
jQuery实现表单动态加减、ajax表单提交功能
Jun 08 #jQuery
Node.js中你不可不精的Stream(流)
Jun 08 #Javascript
You might like
修改了一个很不错的php验证码(支持中文)
2007/02/14 PHP
session在PHP大型web应用中的使用
2011/06/25 PHP
Zend Framework入门应用实例详解
2016/12/11 PHP
PHP二维数组去重算法
2016/12/17 PHP
jquery简单的拖动效果实现原理及示例
2013/07/26 Javascript
JavaScript设置首页和收藏页面的小例子
2013/11/11 Javascript
Bootstrap每天必学之面板
2015/11/30 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
Vue数组更新及过滤排序功能
2017/08/10 Javascript
jQuery实现的简单前端搜索功能示例
2017/10/28 jQuery
JS中Object对象的原型概念基础
2018/01/29 Javascript
详解webpack2异步加载套路
2018/09/14 Javascript
Vue+Express实现登录注销功能的实例代码
2019/05/05 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
2019/09/23 Javascript
JS前后端实现身份证号验证代码解析
2020/07/23 Javascript
解决antd日期选择组件,添加value就无法点击下一年和下一月问题
2020/10/29 Javascript
在Python的Flask框架中使用日期和时间的教程
2015/04/21 Python
Python的Django框架中TEMPLATES项的设置教程
2015/05/29 Python
不知道这5种下划线的含义,你就不算真的会Python!
2018/10/09 Python
matplotlib.pyplot绘图显示控制方法
2019/01/15 Python
python3 tcp的粘包现象和解决办法解析
2019/12/09 Python
Python对wav文件的重采样实例
2020/02/25 Python
python如何设置静态变量
2020/09/07 Python
Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)
2020/10/29 Python
利于python脚本编写可视化nmap和masscan的方法
2020/12/29 Python
Python中全局变量和局部变量的理解与区别
2021/02/07 Python
HTML5 progress和meter控件_动力节点Java学院整理
2017/07/06 HTML / CSS
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
2016/10/23 HTML / CSS
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
英国鲜花递送:Blossoming Gifts
2020/07/10 全球购物
英文演讲稿
2014/05/15 职场文书
党员民主生活会材料
2014/12/15 职场文书
2014年终个人总结报告
2015/03/09 职场文书
教师专业技术工作总结2015
2015/05/13 职场文书
党支部鉴定意见
2015/06/02 职场文书
详解TS数字分隔符和更严格的类属性检查
2021/05/06 Javascript