Vue中的异步组件函数实现代码


Posted in Javascript onJuly 20, 2018

具体代码如下所示:

export default new Router({
 routes: [
  {
   path: '/live',
   name: 'live',
   component: () => import('@/view/live/live.vue')
  }
 ]
})

上面的代码是很常见的router代码分割,只在代码路由为live才会去加载live.vue

但这样在live.vue获取的过程将是一片空白,什么也没有,体验不好, 利用vue提供的异步组建可以解决

新建一个 loadable.vue

<template>
  <index></index>
</template>
<script>
  import LoadingComponent from './load.vue' // LoadingComponents是 live.vue为获取前展示的内容
  export default {
    components: {
      index: () => ({
        component: import('@/view/live/live.vue'),
        // 异步组件加载时使用的组件
        loading: LoadingComponent,
        // 展示加载时组件的延时时间。默认值是 200 (毫秒)
        delay: 200,
        // 如果提供了超时时间且组件加载也超时了,
        // 则使用加载失败时使用的组件。默认值是:`Infinity`
        timeout: 3000
      })
    }
  }
</script>

然后修改router.js

export default new Router({
 routes: [
  {
   path: '/live',
   name: 'live',
   component: import('loadable.vue')
  }
 ]
})

这样在获取到live.vue之前就会有自定义的loading展示了

但是路由很多, 我们不可能每个路由都写一个 loadable.vue, 所以编写一个函数来解决

新建一个 loadable.js

import LoadingComponent from './load.vue'
export default (asyncComponent) => {
  const Com= () => ({
    // 这里vue官网可以知道具体有哪些参数可以设置
    // https://cn.vuejs.org/v2/guide/components-dynamic-async.html#%E5%A4%84%E7%90%86%E5%8A%A0%E8%BD%BD%E7%8A%B6%E6%80%81
    component: asyncComponent(),
    loading: LoadingComponent
  })
  return {
    render (h) {
     return h(Com, {})
    }
  }
}

然后修改一下router.js

import loadable from 'loadable.js'
export default new Router({
 routes: [
  {
   path: '/live',
   name: 'live',
   component: loadable (() => import('@/view/live/live.vue'))
  }
 ]
})

这样一个极简的vue异步函数就完成了

总结

以上所述是小编给大家介绍的Vue中的异步组件函数实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript表单常用验证集合
Jan 16 Javascript
Javascript的并行运算实现代码
Nov 19 Javascript
jqueryUI里拖拽排序示例分析
Feb 26 Javascript
详解JavaScript设计模式开发中的桥接模式使用
May 18 Javascript
jQuery基于ID调用指定iframe页面内的方法
Jul 06 Javascript
如何检测JavaScript的各种类型
Jul 30 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
Apr 27 Javascript
使用node.js搭建服务器
May 20 Javascript
AngularJs 终极购物车(实例讲解)
Nov 08 Javascript
vue系列之requireJs中引入vue-router的方法
Jul 18 Javascript
node中的session的具体使用
Sep 14 Javascript
关于layui flow loading占位图的实现方法
Sep 21 Javascript
vue 中的keep-alive实例代码
Jul 20 #Javascript
Angularjs实现页面模板清除的方法
Jul 20 #Javascript
搭建vue开发环境
Jul 19 #Javascript
jQuery实现表单动态添加数据并提交的方法
Jul 19 #jQuery
微信小程序项目实践之九宫格实现及item跳转功能
Jul 19 #Javascript
js调用设备摄像头的方法
Jul 19 #Javascript
微信小程序定位当前城市的方法
Jul 19 #Javascript
You might like
PHP字符串的连接的简单实例
2013/12/30 PHP
微信支付的开发流程详解
2016/09/13 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
JavaScript中双叹号(!!)作用示例介绍
2014/04/10 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
2014/06/13 Javascript
HTML5使用DeviceOrientation实现摇一摇功能
2015/06/05 Javascript
基于jquery实现的仿优酷图片轮播特效代码
2016/01/13 Javascript
Javascript中call,apply,bind方法的详解与总结
2016/12/12 Javascript
手动初始化Angular的模块与控制器
2016/12/26 Javascript
js实现可以点击收缩或张开的悬浮窗
2017/09/18 Javascript
利用JS测试目标网站的打开响应速度
2017/12/01 Javascript
微信小程序仿RadioGroup改变样式的处理方案
2018/07/13 Javascript
jQuery序列化form表单数据为JSON对象的实现方法
2018/09/20 jQuery
vue-router传递参数的几种方式实例详解
2018/11/13 Javascript
JavaScript 装逼指南(js另类写法)
2020/05/10 Javascript
[59:07]海涛为你详解DOTA2新版本“贤哲秘契”
2014/11/22 DOTA
[46:55]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python实现随机森林random forest的原理及方法
2017/12/21 Python
TensorFlow实现简单卷积神经网络
2018/05/24 Python
keras中的卷积层&amp;池化层的用法
2020/05/22 Python
HTML5 canvas基本绘图之图形组合
2016/06/27 HTML / CSS
京东港澳售:京东直邮港澳台
2018/01/31 全球购物
香港连卡佛百货官网:Lane Crawford
2019/09/04 全球购物
土木工程专业大学毕业生求职信
2013/10/13 职场文书
教师求职推荐信范文
2013/11/20 职场文书
开工仪式主持词
2014/03/20 职场文书
道路施工安全责任书
2014/07/24 职场文书
2015高考寄语集锦
2015/02/27 职场文书
2015年纪念“卢沟桥事变”78周年活动方案
2015/05/06 职场文书
2015中秋节晚会开场白
2015/07/30 职场文书
幼儿园托班开学寄语(2016秋季)
2015/12/03 职场文书
英语教学课后反思
2016/02/15 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers
Python中X[:,0]和X[:,1]的用法
2021/05/10 Python
MySQL中int (10) 和 int (11) 的区别
2022/01/22 MySQL