解析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 相关文章推荐
js利用div背景,做一个竖线的效果。
Nov 22 Javascript
如何调试异步加载页面里包含的js文件
Oct 30 Javascript
JavaScript使用concat连接数组的方法
Apr 06 Javascript
JS简单实现多级Select联动菜单效果代码
Sep 06 Javascript
jQuery通过ajax快速批量提交表单数据
Oct 25 Javascript
vue.js绑定class和style样式(6)
Dec 09 Javascript
ES5 ES6中Array对象去除重复项的方法总结
Apr 27 Javascript
详解JavaScript中return的用法
May 08 Javascript
Webpack框架核心概念(知识点整理)
Dec 22 Javascript
详解如何在nuxt中添加proxyTable代理
Aug 10 Javascript
javascript 对象 与 prototype 原型用法实例分析
Nov 11 Javascript
浅谈webpack构建工具配置和常用插件总结
May 11 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
解决控件遮挡问题:关于有窗口元素和无窗口元素
2007/01/28 PHP
PHP 冒泡排序算法的实现代码
2010/08/08 PHP
smarty实现多级分类的方法
2014/12/05 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
2016/11/16 PHP
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
JS+css 图片自动缩放自适应大小
2013/08/08 Javascript
javascript对JSON数据排序的3个例子
2014/04/12 Javascript
javascript中定义类的方法汇总
2014/12/28 Javascript
使用jQueryMobile实现滑动翻页效果的方法
2015/02/04 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
Bootstrap媒体对象的实现
2016/05/01 Javascript
Bootstrap三种表单布局的使用方法
2016/06/21 Javascript
原生JS实现-星级评分系统的简单实例
2016/08/21 Javascript
浅谈JS之tagNaem和nodeName
2016/09/13 Javascript
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
js链表操作(实例讲解)
2017/08/29 Javascript
Element-ui之ElScrollBar组件滚动条的使用方法
2018/09/14 Javascript
layui 弹出层值回传解决方式
2019/11/14 Javascript
Python中使用Queue和Condition进行线程同步的方法
2016/01/19 Python
linecache模块加载和缓存文件内容详解
2018/01/11 Python
TensorFlow实现Batch Normalization
2018/03/08 Python
python版本单链表实现代码
2018/09/28 Python
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
python生成带有表格的图片实例
2019/02/03 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
python 基于UDP协议套接字通信的实现
2021/01/22 Python
html5利用canvas绘画二级树形结构图的示例
2017/09/27 HTML / CSS
当我正在为表建立索引的时候,SQL Server 会禁止对表的访问吗
2014/04/28 面试题
linux面试题参考答案(4)
2014/09/21 面试题
实习公司领导推荐函
2014/05/21 职场文书
整改通知书格式
2015/04/22 职场文书
2015年乡镇工会工作总结
2015/05/19 职场文书
婚前协议书怎么写,才具有法律效力呢 ?
2019/06/28 职场文书
2019年共青团工作条例最新版
2019/11/12 职场文书
(开源)微信小程序+mqtt,esp8266温湿度读取
2021/04/02 Javascript
Python自动化测试PO模型封装过程详解
2021/06/22 Python