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中字符串拼接需注意的问题
Jul 13 Javascript
ModelDialog JavaScript模态对话框类代码
Apr 17 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
Jan 24 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
Oct 15 Javascript
简介JavaScript中Math.cos()余弦方法的使用
Jun 15 Javascript
在javascript中随机数 math random如何生成指定范围数值的随机数
Oct 21 Javascript
JQUERY的AJAX请求缓存里的数据问题处理
Feb 23 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
May 05 Javascript
JS使用正则实现去掉字符串左右空格的方法
Dec 27 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
Oct 26 Javascript
javascript定时器的简单应用示例【控制方块移动】
Jun 17 Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
Jan 26 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 字符截取 解决中文的截取问题,不用mb系列
2009/09/29 PHP
php 计划任务 检测用户连接状态
2012/03/29 PHP
在JavaScript中实现命名空间
2006/11/23 Javascript
jquery JSON的解析方式
2009/07/25 Javascript
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
jquery对dom的操作常用方法整理
2013/06/25 Javascript
javascript同页面多次调用弹出层具体实例代码
2013/08/16 Javascript
浅析JavaScript原型继承的陷阱
2013/12/03 Javascript
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
jquery转盘抽奖功能实现
2015/11/13 Javascript
浅谈javascript中的Function和Arguments
2016/08/30 Javascript
JS数组搜索之折半搜索实现方法分析
2017/03/27 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
AngularJS与BootStrap模仿百度分页的示例代码
2018/05/23 Javascript
详解React 服务端渲染方案完美的解决方案
2018/12/14 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
原生JavaScript实现滑动拖动验证的示例代码
2019/12/06 Javascript
vue中重定向redirect:‘/index‘,不显示问题、跳转出错的完美解决
2020/09/28 Javascript
Python二分查找详解
2015/09/13 Python
python批量制作雷达图的实现方法
2016/07/26 Python
python 多线程中子线程和主线程相互通信方法
2018/11/09 Python
解决Python运行文件出现out of memory框的问题
2018/12/03 Python
如何通过python画loss曲线的方法
2019/06/26 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
Html5中的桌面通知Notification的实现
2018/09/25 HTML / CSS
阿玛尼化妆品美国官网:Giorgio Armani Beauty
2017/02/02 全球购物
英国最大的在线运动补充剂商店:Discount Supplements
2017/06/03 全球购物
Groupon荷兰官方网站:高达70%的折扣
2019/11/01 全球购物
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
求职推荐信
2013/10/28 职场文书
同学聚会策划方案
2014/06/06 职场文书
2014年酒店工作总结范文
2014/11/17 职场文书
2014年妇幼卫生工作总结
2014/12/09 职场文书
永远是春天观后感
2015/06/12 职场文书
Go语言带缓冲的通道实现
2021/04/26 Golang
MySQL如何快速创建800w条测试数据表
2022/03/17 MySQL