当前位置: 首页 > wzjs >正文

axcure做网站ui网络营销策划的目的

axcure做网站ui,网络营销策划的目的,网站设计开发是啥,做网站项目流程文章目录 一、场景描述二、组件为什么会加载两次?三、使用 defineAsyncComponent 后为何只加载一次?四、总结对比 在 Vue 3 开发中,可能会遇到这样的问题:某个子组件在页面加载时“看起来”被创建了两次。多少有点让人疑惑&#x…

文章目录

    • 一、场景描述
    • 二、组件为什么会加载两次?
    • 三、使用 defineAsyncComponent 后为何只加载一次?
    • 四、总结对比

在 Vue 3 开发中,可能会遇到这样的问题:某个子组件在页面加载时“看起来”被创建了两次。多少有点让人疑惑,也可能影响性能和逻辑的正确性。

一、场景描述

子组件使用方式,示例代码:

// template
<Childv-if="!detailLoading"ref="childRef"v-model:info="info"
/>// script
import Child from './components/Child.vue';// 在请求详情接口前设置 detailLoading.value = true;接口完成后,在 finally 中设置 detailLoading.value = false
const detailLoading = ref(true);
const getModelDetail = async () => {detailLoading.value = true;try {const res = await xxx;info.value = res;} finally {detailLoading.value = false;}
};

结果:Child 组件被加载了 两次

二、组件为什么会加载两次?

这个问题的核心在于 Vue 的响应式系统和组件生命周期行为,尤其是与 v-if、ref 和组件引入方式有关。

1. v-if 控制组件渲染时机

因为我们使用了 v-if=“!detailLoading” 来控制 < Child > 是否渲染:

<Child v-if="!detailLoading" />

也就是说:

  • 初始时 detailLoading 是 true,所以组件不会渲染。
  • 请求完成后设置 detailLoading = false,触发组件首次渲染。
  • 如果中间状态变化导致 detailLoading 再次变为 true,再变回 false,组件就会再次重新创建。
  • 所以如果我们在代码中不小心多次修改了 detailLoading 的值,或者初始值处理不当,组件就会被创建多次。

2. import 引入组件是同步的

import Child from './components/Child.vue';

这是标准的 ES Module 导入方式,模块在应用启动时就会被加载并执行一次。但注意:导入本身只执行一次,不代表组件实例只创建一次。

每次 v-if 变为 true,Vue 都会重新创建一个新的组件实例。因此:

组件加载次数 = v-if 从 false 变为 true 的次数

三、使用 defineAsyncComponent 后为何只加载一次?

更改引入组件的方式:

const Child = defineAsyncComponent(() =>import('./components/Child.vue')
);

此时发现组件只加载了一次。

原因分析

  1. defineAsyncComponent是懒加载机制
  • 它会在组件第一次需要渲染时才去异步加载组件文件。
  • 加载完成后,组件会被缓存,后续再次渲染时不会再发起新的网络请求。
  1. Vue 内部做了缓存优化
  • 当使用 defineAsyncComponent 包裹动态导入时,Vue 会自动缓存这个异步组件的结果。即使你多次切换 v-if 的值,它也不会重复加载组件文件。

也就是说:

虽然组件实例可能会被销毁重建(由 v-if 控制),但组件文件只加载一次。

四、总结对比

特性import 直接引入defineAsyncComponent + import()
组件文件加载方式同步加载,初始化时即加载异步加载,按需加载
文件是否重复加载不会(模块单例)不会(内部缓存)
组件实例是否重复创建是(由 v-if 控制)是(由 v-if 控制)
适合场景小型组件或首屏必须使用的组件大型组件、非首屏组件、懒加载优化

总结:

  • 使用 import 引入的组件只会加载一次模块,但实例可能被多次创建。
  • 使用 defineAsyncComponent 可以延迟加载组件,并利用 Vue 的缓存机制避免重复请求。
  • 实际开发中应根据组件大小、使用频率选择合适的加载方式。
http://www.dtcms.com/wzjs/171503.html

相关文章:

  • 站长工具 怎么做网站地图百度手机助手下载正版
  • 深圳免费建站百度公司高管排名
  • 免费做ppt网站怎么优化推广自己的网站
  • 成都网站制作电话广告宣传方式有哪些
  • 做网站后台学什么专业外链服务
  • 恩施哪里有做网站的护肤品推广软文
  • 图书类网站开发的背景百度竞价登录入口
  • 网站建设的三网合一百度竞价排名机制
  • 我们不仅仅做网站更懂得网络营销郑州做网站最好的公司
  • 深圳建站服务公司有哪些搜索引擎网站
  • 2022腾讯云网站建设方案书寻找客户的渠道和方法
  • 国内移动端网站做的最好的seo优化网站技术排名百度推广
  • 海外医疗网站建设深圳网站推广公司
  • 百度推广要不要建网站深圳seo优化公司
  • 攸县网站制作公司信息流优化师面试常见问题
  • 用html5制作个人网站网络营销成功的品牌
  • 网站的静态资源服务器怎么做seo排名赚app靠谱吗
  • 为企业做优做强厦门seo外包
  • dw管理动态网站模板下载谷歌海外广告投放推广
  • 搭建一个网站的基本流程个人网站开发网
  • 做网站的没有进项票怎么办网络推广怎么做?
  • 用游戏人物做网站属于侵权吗百度客服电话是多少
  • 为违法网站做推广进去要几年网站搭建公司
  • 简要叙述如何规划建设一个企业网站优化关键词的方法正确的是
  • linux做网站的好处网页设计素材
  • 东莞网站的关键字推广搜索引擎营销方法有哪些
  • 网站建设有哪些平台百度推广客户端下载安装
  • 邯郸住房及城乡建设部网站百度站长平台提交网站
  • 长沙私人做网站宁波百度seo点击软件
  • 建设网站公司哪个好地推扫码平台