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 伪数组实现方法
Oct 11 Javascript
easyui datagrid 键盘上下控制选中行示例
Mar 31 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
Apr 01 Javascript
jQuery实现文本展开收缩特效
Jun 03 Javascript
基于JS实现类似支付宝支付密码输入框
Sep 02 Javascript
React组件生命周期详解
Jul 03 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
Jan 18 jQuery
基于vue-element组件实现音乐播放器功能
May 06 Javascript
vue-vuex中使用commit提交mutation来修改state的方法详解
Sep 16 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
Sep 21 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
Nov 30 Javascript
vue 把二维或多维数组转一维数组
Apr 24 Vue.js
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/11/16 PHP
php 数组的创建、调用和更新实现代码
2009/03/09 PHP
PHP函数getenv简介和使用实例
2014/05/12 PHP
php中Snoopy类用法实例
2015/06/19 PHP
php实现的简单美国商品税计算函数
2015/07/13 PHP
php实现三级级联下拉框
2016/04/17 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
Javascript 日期处理之时区问题
2009/10/08 Javascript
jquery 输入框数字限制插件
2009/11/10 Javascript
JS date对象的减法处理实现代码
2010/12/28 Javascript
在js(jquery)中获得文本框焦点和失去焦点的方法
2012/12/04 Javascript
javascript学习笔记之10个原生技巧
2014/05/21 Javascript
深入理解Node.js的HTTP模块
2016/10/12 Javascript
Javascript 制作图形验证码实例详解
2016/12/22 Javascript
微信小程序去哪里找 小程序到底如何使用(附小程序名单)
2017/01/09 Javascript
微信小程序 常用工具类详解及实例
2017/02/15 Javascript
jquery仿微信聊天界面
2017/05/06 jQuery
深入掌握 react的 setState的工作机制
2017/09/27 Javascript
前端MVVM框架解析之双向绑定
2018/01/24 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
微信小程序实现弹出菜单功能
2018/06/12 Javascript
VUE接入腾讯验证码功能(滑块验证)备忘
2019/05/07 Javascript
[52:31]VP vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
世界顶级俱乐部的官方球衣和套装:Subside Sports
2018/04/22 全球购物
Nike法国官方网站:Nike.com FR
2018/07/22 全球购物
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
娱乐地球:Entertainment Earth
2020/01/08 全球购物
英国领先的高级美容和在线皮肤诊所:Face the Future
2020/06/17 全球购物
介绍一下#error预处理
2015/09/25 面试题
大学生物业管理求职信
2013/10/24 职场文书
摄影专业毕业生求职信
2014/08/05 职场文书
赵氏孤儿观后感
2015/06/09 职场文书
学校安全管理制度
2015/08/06 职场文书
中秋节随笔
2015/08/15 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书
《植物妈妈有办法》教学反思
2016/02/23 职场文书