解析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 相关文章推荐
JQuery live函数
Dec 24 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
Oct 20 Javascript
thinkphp 表名 大小写 窍门
Feb 01 Javascript
jQuery通过deferred对象管理ajax异步
May 20 Javascript
JavaScript中Form表单技术汇总(推荐)
Jun 26 Javascript
Vue组件的使用教程详解
Jan 05 Javascript
分享ES6的7个实用技巧
Jan 18 Javascript
使用D3.js创建物流地图的示例代码
Jan 27 Javascript
JavaScript笛卡尔积超简单实现算法示例
Jul 30 Javascript
详解jQuery如何实现模糊搜索
May 10 jQuery
vue项目打包后怎样优雅的解决跨域
May 26 Javascript
JS表格的动态操作完整示例
Jan 13 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中防止直接访问或查看或下载config.php文件的方法
2012/07/07 PHP
php实现图形显示Ip地址的代码及注释
2014/01/20 PHP
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
JS声明变量背后的编译原理剖析
2012/12/28 Javascript
jQuery获得内容和属性方法及示例
2013/12/02 Javascript
jquery form表单序列化为对象的示例代码
2014/03/05 Javascript
Javascript访问器属性实例分析
2014/12/30 Javascript
Javascript中的作用域和上下文深入理解
2015/07/03 Javascript
javascript中Date format(js日期格式化)方法小结
2015/12/17 Javascript
jqPlot jQuery绘图插件的使用
2016/06/18 Javascript
vue利用axios来完成数据的交互
2018/03/23 Javascript
JS数组求和的常用方法总结【5种方法】
2019/01/14 Javascript
详解Js里的for…in和for…of的用法
2019/03/28 Javascript
vue实现搜索过滤效果
2019/05/28 Javascript
jQuery插件simplePagination的使用方法示例
2020/04/28 jQuery
Python时间戳与时间字符串互相转换实例代码
2013/11/28 Python
python获取本地计算机名字的方法
2015/04/29 Python
浅谈Python实现Apriori算法介绍
2017/12/20 Python
Python简单计算文件MD5值的方法示例
2018/04/11 Python
Django 全局的static和templates的使用详解
2019/07/19 Python
Numpy的简单用法小结
2019/08/28 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
pandas 对group进行聚合的例子
2019/12/27 Python
使用python matploblib库绘制准确率,损失率折线图
2020/06/16 Python
django Model层常用验证器及自定义验证器详解
2020/07/15 Python
matplotlib实现数据实时刷新的示例代码
2021/01/05 Python
HTML5 Geolocation API的正确使用方法
2018/12/04 HTML / CSS
HTML最新标准HTML5总结(必看)
2016/06/13 HTML / CSS
HTML5 body设置全屏背景图片的示例代码
2020/12/08 HTML / CSS
尼克松手表官网:Nixon手表
2019/03/17 全球购物
《红军不怕远征难》教学反思
2014/04/14 职场文书
幼儿园中班下学期评语
2014/04/18 职场文书
2014党员四风对照检查材料思想汇报
2014/09/17 职场文书
2014年个人售房协议书
2014/10/30 职场文书
深入开展党的群众路线教育实践活动心得体会
2014/11/05 职场文书
劳动争议和解协议书范本
2014/11/20 职场文书