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 相关文章推荐
你的编程语言可以这样做吗?
Sep 07 Javascript
js获取图片长和宽度的代码
Nov 24 Javascript
JavaScript的类型转换(字符转数字 数字转字符)
Aug 30 Javascript
jquery插件tooltipv顶部淡入淡出效果使用示例
Dec 05 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
Oct 09 Javascript
javascript图片预加载完整实例
Dec 10 Javascript
基于vue的下拉刷新指令和滚动刷新指令
Dec 23 Javascript
jQuery学习之DOM节点的插入方法总结
Jan 22 Javascript
Vue keep-alive实践总结(推荐)
Aug 31 Javascript
解决vue页面DOM操作不生效的问题
Mar 17 Javascript
详解html-webpack-plugin插件(用法总结)
Sep 12 Javascript
JS使用队列对数组排列,基数排序算法示例
Mar 02 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初学者写及时补给skype用户充话费的小程序
2008/11/02 PHP
PHP实现邮件群发的源码
2013/06/18 PHP
PHP中对各种加密算法、Hash算法的速度测试对比代码
2014/07/08 PHP
PHP实现JS中escape与unescape的方法
2016/07/11 PHP
php数据库操作model类(使用__call方法)
2016/11/16 PHP
浅谈PHP安全防护之Web攻击
2017/01/03 PHP
Mac系统完美安装PHP7详细教程
2017/06/06 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
utf-8编码引起js输出中文乱码的解决办法
2010/06/23 Javascript
原生js 秒表实现代码
2012/07/24 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
2013/01/15 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
2013/07/22 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
2015/06/04 Javascript
js实现三张图(文)片一起切换的banner焦点图
2015/08/25 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
2016/03/02 Javascript
如何用JavaScript实现动态修改CSS样式表
2016/05/20 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
Windows安装Node.js报错:2503、2502的解决方法
2017/10/25 Javascript
实例教学如何写vue插件
2017/11/30 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
微信小程序swiper左右扩展各显示一半代码实例
2019/12/05 Javascript
vue项目中播放rtmp视频文件流的方法
2020/09/17 Javascript
django实现分页的方法
2015/05/26 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
Python集中化管理平台Ansible介绍与YAML简介
2019/06/12 Python
CSS3打造百度贴吧的3D翻牌效果示例
2017/01/04 HTML / CSS
Notino芬兰:购买香水和化妆品
2019/04/15 全球购物
服务行业个人求职的自我评价
2013/12/12 职场文书
秋季校运动会广播稿
2014/02/23 职场文书
服装采购员岗位职责
2014/03/15 职场文书
简单的离婚协议书范本
2014/11/16 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
2021/05/05 Golang
mysql外连接与内连接查询的不同之处
2021/06/03 MySQL
Element-ui Layout布局(Row和Col组件)的实现
2021/12/06 Vue.js