解析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 相关文章推荐
写出更好的JavaScript程序之undefined篇(中)
Nov 23 Javascript
juqery 学习之六 CSS--css、位置、宽高
Feb 11 Javascript
jQuery 获取和设置select下拉框的值实现代码
Nov 08 Javascript
Node.js与PHP、Python的字符处理性能对比
Jul 06 Javascript
JS自定义选项卡函数及用法实例分析
Sep 02 Javascript
JavaScript实现的冒泡排序法及统计相邻数交换次数示例
Apr 26 Javascript
基于Jquery Ajax type的4种类型(详解)
Aug 02 jQuery
Angular入口组件(entry component)与声明式组件的区别详解
Apr 09 Javascript
Vue项目总结之webpack常规打包优化方案
Jun 06 Javascript
js判断在哪个浏览器打开项目的方法
Jan 21 Javascript
js实现批量删除功能
Aug 27 Javascript
可拖拽组件slider.js使用方法详解
Dec 04 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 搜索框提示(自动完成)实例代码
2012/02/05 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
2014/07/08 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
PHP编程入门的基本语法知识点总结
2016/01/26 PHP
ExtJS 2.0 实用简明教程之布局概述
2009/04/29 Javascript
jQuery中live方法的重复绑定说明
2011/10/21 Javascript
使用javascipt---实现二分查找法
2013/04/10 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
JavaScript操作DOM元素的childNodes和children区别
2015/04/01 Javascript
详解AngularJS中自定义指令的使用
2015/06/17 Javascript
JavaScript数组去重的五种方法
2015/11/05 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
vue-router:嵌套路由的使用方法
2017/02/21 Javascript
Django+Vue.js搭建前后端分离项目的示例
2017/08/07 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
2019/09/28 Javascript
十分钟教你上手ES2020新特性
2020/02/12 Javascript
JavaScript oncopy事件用法实例解析
2020/05/13 Javascript
JQuery+drag.js上传图片并且实现图片拖曳
2020/11/18 jQuery
Python3实现发送QQ邮件功能(文本)
2017/12/15 Python
python使用pdfminer解析pdf文件的方法示例
2018/12/20 Python
Django在pycharm下修改默认启动端口的方法
2019/07/26 Python
python做接口测试的必要性
2019/11/20 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
python数据分析:关键字提取方式
2020/02/24 Python
CSS3 实现的加载动画
2020/12/07 HTML / CSS
美国知名的时尚购物网站:Anthropologie
2016/12/22 全球购物
Steve Madden官网:美国鞋类品牌
2017/01/29 全球购物
UGG英国官方网站:UGG UK
2018/02/08 全球购物
外国语学院毕业生自荐信
2013/10/28 职场文书
2014最新离职证明范本
2014/09/12 职场文书
单位同意报考证明
2015/06/17 职场文书
2019年度政务公开考核工作总结模板
2019/11/11 职场文书
matplotlib之pyplot模块实现添加子图subplot的使用
2021/04/25 Python
OpenCV 图像梯度的实现方法
2021/07/25 Python