前端流行框架Vue3教程:26. 异步组件

26. 异步组件

根据上节课的代码,我们在切换到B组件的时候,发现并没有网络请求:


异步组件:

在大型项目中,我们可能需要拆分应用为更小的块,并仅在需要时再从服务器加载相关组件。Vue 提供了defineAsyncComponent方法来实现此功能

我们继续用上节课的代码修改下:

vue 复制代码
<script>
// 导入组件A
import ComponentA from "./components/ComponentA.vue"

import {defineAsyncComponent} from "vue";

// 定义一个异步组件 ComponentB
// 使用 defineAsyncComponent 来懒加载组件,以提高应用的性能
// 当组件实际需要渲染时,才会加载对应的组件文件
const ComponentB = defineAsyncComponent(() =>
    import("./components/ComponentB.vue")
)
export default {
  data() {
    return {
      tabComponent: 'ComponentA'
    }
  },
  components: {
    ComponentA,
    ComponentB
  }, methods: {
    changeHandle() {
      this.tabComponent = this.tabComponent === 'ComponentA' ? 'ComponentB' : 'ComponentA'
    }
  }
}
</script>
<template>
  <!-- 使用 keep-alive 组件来缓存动态组件,避免重复渲染 -->
  <keep-alive>
    <component :is="tabComponent"></component>
  </keep-alive>
  <button @click="changeHandle">切换组件</button>
</template>

这个时候,我们切换B组件的时候,就看到了网络请求:

相关推荐
程序员大阳43 分钟前
HTML+CSS+JS对话式实战(9)-项目总结与问题分析
javascript·css·html·实战·项目总结
Flynt1 小时前
别写拖拽行为,只声明"能拖到哪":UIST 最佳论文的拖拽方案我实测了
前端·svg·preact
Moment2 小时前
代码都能让 Agent 写了,我们为什么还要学前端?
前端·后端·面试
Hilaku2 小时前
MCP 协议会成为前端 AI 工程的标准接口吗?
前端·javascript·程序员
Zan2 小时前
Tauri 2 实战:为什么一个可靠的桌面应用,应该由 Rust Host 管理生命周期?
前端·架构·rust
SameX2 小时前
鸿蒙 ArkTS 独立开发者的项目结构 model / dao / viewmodel / page / common 的分层
前端
阿星AI工作室2 小时前
WorkBuddy做数字人口播:动效包装+克隆声音+真实照片+对口型全流程
前端
火山引擎开发者社区2 小时前
给企业配一双 AI 的手:火山引擎 OS Agent 替你操作手机和电脑
前端·人工智能
三年三月2 小时前
自建https证书SSL
前端
ClouGence4 小时前
Web 自动化测试总是超时?聊聊等待、超时和异步加载
前端·测试