解析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 相关文章推荐
Prototype使用指南之range.js
Jan 10 Javascript
parseInt parseFloat js字符串转换数字
Aug 01 Javascript
JsDom 编程小结
Aug 09 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
Sep 25 Javascript
IE下通过a实现location.href 获取referer的值
Sep 04 Javascript
使用jquery组件qrcode生成二维码及应用指南
Feb 22 Javascript
jQuery解决浏览器兼容性问题案例分析
Apr 15 Javascript
基于vue实现swipe轮播组件实例代码
May 24 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
May 23 Javascript
vue-router命名视图的使用讲解
Jan 19 Javascript
vue实现分环境打包步骤(给不同的环境配置相对应的打包命令)
Jun 04 Javascript
让IDE识别webpack的别名alias的实现方法
May 06 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
人大复印资料处理程序_补充篇
2006/10/09 PHP
PHP如何得到当前页和上一页的地址?
2006/11/27 PHP
PHP 进程锁定问题分析研究
2009/11/24 PHP
php curl 伪造IP来源的实例代码
2012/11/01 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
2014/03/17 PHP
smarty模板引擎基础知识入门
2015/03/30 PHP
PHP中preg_match函数正则匹配的字符串长度问题
2015/05/27 PHP
兼容IE和FF的图片上传前预览js代码
2013/05/28 Javascript
JS实现时间格式化的方式汇总
2013/10/16 Javascript
jquery实现背景墙聚光灯效果示例分享
2014/03/02 Javascript
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
javascript中apply/call和bind的使用
2017/02/15 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
详解Vue 中 extend 、component 、mixins 、extends 的区别
2017/12/20 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
element-ui 关于获取select 的label值方法
2018/08/24 Javascript
原生JS实现轮播图效果
2018/10/12 Javascript
Vue中this.$nextTick的作用及用法
2020/02/04 Javascript
深入分析jQuery.one() 函数
2020/06/03 jQuery
如何利用 JS 脚本实现网页全自动秒杀抢购功能
2020/10/12 Javascript
[01:04:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第二场 1月31日
2021/03/11 DOTA
python利用hook技术破解https的实例代码
2013/03/25 Python
python用于url解码和中文解析的小脚本(python url decoder)
2013/08/11 Python
Python最基本的输入输出详解
2015/04/25 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
使用Html5、CSS实现文字阴影效果
2018/01/17 HTML / CSS
Mio Skincare法国官网:身体紧致及孕期身体护理
2018/04/04 全球购物
安全教育演讲稿
2014/05/09 职场文书
个人贷款授权委托书样本
2014/10/07 职场文书
2014报到证办理个人委托书
2014/10/08 职场文书
2015年学校教研室主任工作总结
2015/07/20 职场文书
公司行政管理制度范本
2015/08/05 职场文书
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
2021/06/22 Python
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技