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 闭包深入理解(closure)
May 27 Javascript
JQuery 学习笔记 选择器之二
Jul 23 Javascript
JS对象与json字符串格式转换实例
Oct 28 Javascript
详解JavaScript 中的 replace 方法
Jan 01 Javascript
javascript函数自动执行常用方法汇总
Mar 28 Javascript
理解javascript对象继承
Apr 17 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
Mar 06 Javascript
Web前端框架Angular4.0.0 正式版发布
Mar 28 Javascript
ionic中的$ionicPlatform.ready事件中的通用设置
Jun 11 Javascript
JS非空验证及邮箱验证的实例
Aug 11 Javascript
vue-router+nginx 非根路径配置方法
Jun 30 Javascript
微信小程序文字显示换行问题
Jul 28 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
古巴咖啡 Cubita琥爵咖啡 独特的加勒比海风味咖啡
2021/03/06 新手入门
MySQL相关说明
2007/01/15 PHP
php cookie 作用范围?不要在当前页面使用你的cookie
2009/03/24 PHP
Yii针对添加行的增删改查操作示例
2016/10/18 PHP
详谈php ip2long 出现负数的原因及解决方法
2017/04/05 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
2018/02/06 PHP
Yii实现微信公众号场景二维码的方法实例
2020/08/30 PHP
PHP编程一定要改掉的5个不良习惯
2020/09/18 PHP
javascript new一个对象的实质
2010/01/07 Javascript
javascipt匹配单行和多行注释的正则表达式
2013/11/20 Javascript
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
JavaScript实现星级评分
2017/01/12 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
ES6与CommonJS中的模块处理的区别
2018/06/13 Javascript
详解vue-cli下ESlint 配置说明
2018/09/03 Javascript
vue3.0 CLI - 2.5 - 了解组件的三维
2018/09/14 Javascript
Mint UI组件库CheckList使用及踩坑总结
2018/12/20 Javascript
vuex实现及简略解析(小结)
2019/03/01 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
[02:42]岂曰无衣,与子同袍!DOTA2致敬每一位守护人
2020/02/17 DOTA
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
python使用turtle绘制分形树
2018/06/22 Python
python创造虚拟环境方法总结
2019/03/04 Python
python matplotlib 画dataframe的时间序列图实例
2019/11/20 Python
如何在Anaconda中打开python自带idle
2020/09/21 Python
泰国王权免税店官方网站:KingPower
2019/03/11 全球购物
为什么group by 和order by会使查询变慢
2014/05/16 面试题
工作表现评语
2014/01/19 职场文书
五一劳动节演讲稿
2014/09/12 职场文书
检讨书模板
2015/01/29 职场文书
谢师宴学生答谢词
2015/09/30 职场文书
如何制作自己的原生JavaScript路由
2021/05/05 Javascript
Python预测分词的实现
2021/06/18 Python
gateway与spring-boot-starter-web冲突问题的解决
2021/07/16 Java/Android
MySQL 数据表操作
2022/05/04 MySQL