极简Vue的异步组件函数

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异步函数就完成了

    原文作者:crp205
    原文地址: https://segmentfault.com/a/1190000015695910
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞