首页 > 编程 > JavaScript > 正文

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

2019-11-19 13:26:38
字体:
来源:转载
供稿:网友

具体代码如下所示:

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中的异步组件函数实现代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表