欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Vue中的异步组件函数实现代码

程序员文章站 2022-03-21 21:08:08
具体代码如下所示: export default new router({ routes: [ { path: '/live', nam...

具体代码如下所示:

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中的异步组件函数实现代码,希望对大家有所帮助