异步组件是什么

  1. 因为异步路由的存在,所以使用异步组件的次数比较少,大型应用中,需要分割应用为更小的块,并且在需要组件时再加载它们;
  2. 不仅可以在路由切换时懒加载组件,还可以在页面组件中继续使用异步组件,从而实现更细的分割粒度;
  3. 异步组件的函数不仅可以返回一个 Promise,还支持返回一个对象;

vue2 中异步组件的使用

HTML
HTML
<script>
// 第一种:使用工厂函数的方式定义组件,这个工厂函数会异步定义组件,在组件需要渲染时才进行加载;
// 1. 定义组件
const AsyncComponent = ()=>({
  // 异步加载的组件
  component: import(/*webpackChunkName:'async'*/"./components/MyComponent.vue"),
  // loading状态中显示的组件
  loading: LoadingComponent,
  // 加载失败显示的组件
  error: ErrorComponent,
  // 加载组件时的延迟时间,默认值为 200ms
  delay: 200,
  // 加载组件超时时间,超时后默认使用 error 组件
  timeout: 3000
});

// 2. 注册组件
export default {
  components: {
    AsyncComponent 
  }
}
</script>

<!-- 3. 使用组件 -->
<tempalte>
  <AsyncComponent v-if='show'><AsyncComponent>
  <el-button @click="show = !show">点击</el-button>
</tempalte>
<tempalte>
  <Parent v-if="show"></Parent>
  <button @click='handleShow'>出现</button>
</tempalte>
<script>
    export default {
        data() {
            return {
                show: false,
            }
        },
        components: {
          // 第二种动态引入,将这个包命名为 async,为了更好的辨识
            Parent: () => import(/*webpackChunkName: 'async'*/'./chuancan/parent')
        },
        methods: {
            handleShow() {
                console.log("出现了");
                this.show = true;
            }
        }
    }
</script>

vue3 中异步组件的使用

Vue3 中,异步组件的 API 有所改进,可以直接使用 defineAsyncComponent 函数来定义异步组件;

打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. 异步组件是什么
  2. 2. vue2 中异步组件的使用
  3. 3. vue3 中异步组件的使用