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模块模式分析
May 16 Javascript
jQuery为iframe的body添加click事件的实现代码
Apr 07 Javascript
jQuery News Ticker 基于jQuery的即时新闻行情展示插件
Nov 05 Javascript
js中的数组Array定义与sort方法使用示例
Aug 29 Javascript
可恶的ie8提示缺少id未定义
Mar 20 Javascript
基于Arcgis for javascript实现百度地图ABCD marker的效果
Sep 12 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
Jul 09 Javascript
垃圾回收器的相关知识点总结
May 13 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
May 13 jQuery
ES6 Class中实现私有属性的一些方法总结
Jul 08 Javascript
Vue+Element UI+vue-quill-editor富文本编辑器及插入图片自定义
Aug 20 Javascript
JS实现简单打字测试
Jun 24 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
常用表单验证类,有了这个,一般的验证就都齐了。
2006/12/06 PHP
flash用php连接数据库的代码
2011/04/21 PHP
PHP入门经历和学习过程分享
2014/04/11 PHP
ajax+php实现无刷新验证手机号的实例
2017/12/22 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
让Laravel API永远返回JSON格式响应的方法示例
2018/09/05 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
PHP7 错误处理机制修改
2021/03/09 PHP
javascript document.execCommand() 常用解析
2009/12/14 Javascript
javaScript面向对象继承方法经典实现
2013/08/20 Javascript
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
JavaSacript中charCodeAt()方法的使用详解
2015/06/05 Javascript
Node.js中npm常用命令大全
2016/06/09 Javascript
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
微信小程序 欢迎界面开发的实例详解
2016/11/30 Javascript
AngularJS实现动态添加Option的方法
2017/05/17 Javascript
Angular实现的简单查询天气预报功能示例
2017/12/27 Javascript
JavaScript和TypeScript中的void的具体使用
2019/09/12 Javascript
Vue通过WebSocket建立长连接的实现代码
2019/11/05 Javascript
KnockoutJS数组比较算法实例详解
2019/11/25 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
2020/10/27 Javascript
解决vue watch数据的方法被调用了两次的问题
2020/11/07 Javascript
[50:27]OG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/30 DOTA
详解Python中expandtabs()方法的使用
2015/05/18 Python
python实现微信远程控制电脑
2018/02/22 Python
关于PyTorch 自动求导机制详解
2019/08/18 Python
python树的同构学习笔记
2019/09/14 Python
python代码如何注释
2020/06/01 Python
DRF使用simple JWT身份验证的实现
2021/01/14 Python
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
SQL Server的固定数据库角色都有哪些?对应的服务器权限有哪些?
2013/05/18 面试题
优秀的毕业生的自我评价
2013/12/12 职场文书
《美丽的小兴安岭》教学反思
2014/02/26 职场文书
工商局局长个人对照检查材料思想汇报
2014/09/23 职场文书
2015年端午节国旗下演讲稿
2015/03/19 职场文书
十大最强妖精系宝可梦,哲尔尼亚斯实力最强,第五被称为大力士
2022/03/18 日漫