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 相关文章推荐
jQuery标签替换函数replaceWith()的使用例子
Aug 28 Javascript
JavaScript使用RegExp进行正则匹配的方法
Jul 11 Javascript
js实现不提交表单获取单选按钮值的方法
Aug 21 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
Nov 27 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
Aug 02 Javascript
利用Jquery队列实现根据输入数量显示的动画
Sep 01 Javascript
js正则表达式注册页面表单验证
Oct 11 Javascript
基于javascript实现数字英文验证码
Jan 25 Javascript
javascript实现复选框全选或反选
Feb 04 Javascript
Angular事件之不同组件间传递数据的方法
Nov 15 Javascript
vue微信分享的实现(在当前页面分享其他页面)
Apr 16 Javascript
详解React 条件渲染
Jul 08 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/11/16 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
利用PHP命令行模式采集股票趋势信息
2016/08/09 PHP
基于jQuery实现下拉收缩(展开与折叠)特效
2012/12/25 Javascript
javascript显示用户停留时间的简单实例
2013/08/05 Javascript
jQuery 浮动导航菜单适合购物商品类型的网站
2014/09/09 Javascript
Bootstrap模仿起筷首页效果
2016/05/09 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
Angular.JS内置服务$http对数据库的增删改使用教程
2017/05/07 Javascript
详解微信第三方小程序代开发
2017/06/23 Javascript
js+html5实现复制文字按钮
2017/07/15 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
2020/03/10 Javascript
基于JS+HTML实现弹窗提示是否确认提交功能
2020/06/17 Javascript
Vuejs通过拖动改变元素宽度实现自适应
2020/09/02 Javascript
Python处理字符串之isspace()方法的使用
2015/05/19 Python
利用python程序生成word和PDF文档的方法
2017/02/14 Python
python 读文件,然后转化为矩阵的实例
2018/04/23 Python
Python3实现的简单验证码识别功能示例
2018/05/02 Python
pycharm安装和首次使用教程
2018/08/27 Python
Python 调用 Windows API COM 新法
2019/08/22 Python
对Django的restful用法详解(自带的增删改查)
2019/08/28 Python
Python之变量类型和if判断方式
2020/05/05 Python
python3 re返回形式总结
2020/11/20 Python
Spartoo荷兰:鞋子、包包和服装
2018/07/12 全球购物
求网格中的黑点分布
2013/11/06 面试题
高三自我鉴定
2013/10/23 职场文书
年度考核自我鉴定
2013/11/09 职场文书
采购部部门职责
2013/12/15 职场文书
给市场的环保建议书
2014/05/14 职场文书
2014年党支部承诺书
2014/05/30 职场文书
学生会干部任命书
2015/09/21 职场文书
银行求职信范文
2019/05/13 职场文书
Python 循环读取数据内存不足的解决方案
2021/05/25 Python
mysql 直接拷贝data 目录下文件还原数据的实现
2021/07/25 MySQL
在MySQL中你成功的避开了所有索引
2022/04/20 MySQL
Python实现数据的序列化操作详解
2022/07/07 Python