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

前端八股整理(Vue 02)|组件通信、生命周期、v-if 与 v-show

前端八股整理Vue 02组件通信、生命周期、v-if 与 v-show1.讲讲VUE中的组件通信组件通信的基本原则是单向数据流,最基础的是父子通信父传子通常通过 props在 Vue3 里一般用 defineProps 接收,子组件接收父组件传过来的参数.子传父,由于是单项数据流,应该是子通过传递事件通知父组件,数据需要更新.在 Vue3 中可以使用 defineEmits 声明事件并通过 emit 触发。如果是跨层级组件通信,用 provide 和 inject 进行.如果是兄弟组件或者多个组件之间共享状态通常会把状态提升到共同父组件或者在项目里直接用 Pinia 这类状态管理方案。v-model 本质上也是 props emit 的一种语法糖。”2.生命周期钩子created和mounted的区别?可以在created里面发请求吗为什么?created钩子中为什么不可以进行dom操作?dom操作会有什么影响?生命周期钩子:Vue 的生命周期可以理解为组件从创建、挂载、更新到卸载的整个过程。在不同阶段Vue 会提供对应的生命周期钩子方便我们在合适的时机执行逻辑。如果按 Options API (vue2)来说常见可以分成四个阶段第一阶段是创建阶段包括 beforeCreate 和 created。beforeCreate 时实例刚开始初始化data、computed、methods 等都还不能正常访问created 时这些配置已经初始化完成了但组件还没有挂载到页面上所以这时还拿不到真实 DOM。第二阶段是挂载阶段包括 beforeMount 和 mounted。beforeMount 表示组件即将首次渲染模板已经准备好但真实 DOM 还没挂载mounted 表示组件已经挂载到页面可以访问真实 DOM因此常用于 DOM 操作、发送请求、初始化第三方库等。第三阶段是更新阶段包括 beforeUpdate 和 updated。当响应式数据变化时会先触发 beforeUpdate这时数据已经变了但页面还没更新等 DOM 根据最新数据完成更新后会触发 updated。不过一般不建议在 updated 里继续修改响应式数据否则可能引起重复更新甚至死循环。第四阶段是卸载阶段 包括beforeDestroy 和 destroyed。(Vue3beforeUnmount / unmounted)beforeDestroy 表示组件即将被卸载此时实例还可以使用destroyed表示组件已经卸载完成事件监听、定时器、订阅等资源一般会在这个阶段清理。所以在 created 的阶段可以做一些不依赖于真实 dom 的操作,比如初始化数据,比如做一些 js 计算beforeDestroy,可以拿到实例上的数据和方法,也通常还能访问当前组件对应的 DOM,做一些收尾逻辑、清理逻辑是可以的,但这个阶段的重点不是“再做业务计算”而是清理和收尾。created和mounted的区别?区别主要是一个能操作真实的 dom,一个不能操作.从使用场景上来说created 更适合做数据和逻辑初始化比如初始化状态、处理参数、发请求这类不依赖 DOM 的操作而 mounted 更适合做依赖页面节点的逻辑比如获取元素尺寸、操作 DOM、初始化第三方插件等。大量第三方插件本质上不是“给你一个纯函数”而是接收一个真实 DOM 容器然后往这个容器里挂内容、读尺寸、绑事件。比如 echart.但是也有一些第三方库不一定需要 DOM,比如 day.js可以在created里面发请求吗为什么?可以。因为 created 阶段组件实例已经创建完成data、methods、computed、watch 等都已经初始化好了所以这时候可以访问组件数据并执行业务逻辑。而发送请求本身通常不依赖真实 DOM因此完全可以在 created 阶段发请求。补充:什么时候更适合放在 mounted?请求参数依赖 DOM 尺寸:图表要先拿到Dom请求回来后马上要操作 DOM请求回来后要初始化依赖容器的第三方插件需要拿某个元素的位置、宽高再决定请求或渲染逻辑:虚拟列表created钩子中为什么不可以进行dom操作?created 不能做 DOM 操作因为这个阶段只是实例和数据初始化完成了组件还没有真正挂载到页面上真实 DOM 还不存在所以拿不到页面节点。只有到了 mounted 之后真实 DOM 才已经渲染出来才能做 DOM 相关操作。实例组件被创建出来之后在内存里真正工作的那个对象.created 阶段组件实例已经创建好了但这个组件实例对应的内容还没有挂载到页面 DOM 上dom操作会有什么影响?性能上的影响因为 DOM 操作不是普通 JS 变量赋值它会涉及浏览器渲染流程。修改了一些元素的内容,样式,浏览器可能要重新计算样式,重新布局,绘制等等,所以频繁 DOM 操作会比单纯操作 JS 数据更重性能开销更大。2.在 vue 中乱做 dom操作,可能和响应式更新冲突vue 本来希望你修改数据,vue 帮你更新页面.如果你自己又手动去改 dom,比如自己改 innerHTML,或者插入删除子节点,那就可能会出现 vue 更新时把你手动改的内容覆盖掉,页面状态和数据状态不一致,不好维护3.v-if和v-show和直接销毁dom有什么区别,你说v-if性能开销大为什么?v-show 改 displayv-if 控制是否渲染高频切换更适合 v-showv-if 会有创建/销毁开销和直接销毁dom有什么区别?v-if是通过 Vue 的模板和响应式系统让框架决定这块内容要不要渲染直接销毁 DOM通常是你自己手动用原生 DOM API 去删节点比如 removeChild、innerHTML ‘’在 Vue 里一般不建议手动直接操作 DOM因为这会绕开 Vue 的数据驱动,更新机制你说v-if性能开销大为什么?对于 v-if 来说,初始条件如果是 false,就不会渲染,条件如果被切换,就会触发,创建组件/节点,子组件你生命周期重新走一遍,开销主要体现在,频繁切换时开销更大.对于v-show 来说,不管初始条件是什么,元素都会先渲染出来,后面只是切换 display:none,初始化开销更高一点,但是切换开销更小延伸:v-if 和 v-show都可以隐藏一个元素,想让他隐藏之后还占位用什么?visibility: hidden 隐藏 占位opacity: 0 看不见 占位 但元素通常还能响应事件仍然可点击

相关文章:

前端八股整理(Vue 02)|组件通信、生命周期、v-if 与 v-show

前端八股整理(Vue 02)|组件通信、生命周期、v-if 与 v-show 1.讲讲VUE中的组件通信 组件通信的基本原则是单向数据流,最基础的是父子通信:父传子通常通过 props,在 Vue3 里一般用 defineProps 接收,子组件接收父组件传…...

李辉《曾国藩日记》笔记:人到晚年,最重保全!

李辉《曾国藩日记》笔记:人到晚年,最重保全!原文:同治三年五月二十日早饭后清理文件。见客,坐见者二次,立见者一次。程希辕来,围棋二局,又观程与鲁秋航一局。习字一纸。巳刻见客二次…...

NotebookLM技能扩展:连接本地大模型实现智能文档处理

1. 项目概述与核心价值最近在折腾AI应用开发,特别是想把手头的本地大模型用起来,解决一些实际的文档处理问题。相信很多朋友和我一样,手头积累了大量笔记、报告、PDF文档,每次想从中快速找到特定信息或者进行归纳总结,…...

A*搜索算法原理与工业级优化实践

1. A*搜索算法核心原理与工程实现A搜索算法作为路径规划领域的经典算法,其核心优势在于将Dijkstra算法的完备性与贪心算法的高效性相结合。在实际工程项目中,我经常使用A来解决各类移动机器人的导航问题,它的表现始终稳定可靠。1.1 算法核心三…...

如何快速解锁WeMod完整功能:WandEnhancer终极使用指南

如何快速解锁WeMod完整功能:WandEnhancer终极使用指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer WandEnhancer是一款专为WeMod应用设计…...

别再傻傻分不清了!WPF里Shape和Geometry到底该用哪个?实战避坑指南

WPF图形渲染进阶:Shape与Geometry的深度抉择与性能优化实战 在WPF开发中,图形渲染是构建丰富用户界面的核心能力之一。当开发者需要绘制自定义图形时,通常会面临选择Shape还是Geometry的难题。这个看似简单的选择背后,实际上涉及到…...

手把手教你用TwinCAT3配置松下A6伺服,打通Simulink Real-Time实时控制(含VS版本避坑指南)

TwinCAT3与松下A6伺服深度集成指南:从EtherCAT配置到Simulink实时控制实战 引言 在工业自动化领域,实时控制系统的搭建往往伴随着复杂的软硬件协同挑战。当工程师需要将高性能伺服驱动与强大的仿真环境相结合时,EtherCAT总线技术与Simulink…...

本地AI部署实战:模块化架构、环境配置与性能调优指南

1. 项目概述:一个被低估的本地化AI工具 最近在折腾本地AI部署的时候,又翻出了这个叫“bailing”的项目。说实话,第一次在GitHub上看到 wwbin2017/bailing 这个仓库时,我差点就划过去了。名字听起来平平无奇,简介也写…...

LangGraph实战:从链式到图式AI工作流开发指南

1. 项目概述:为什么我们需要一个“Awesome-LangGraph”?如果你最近在折腾AI应用开发,尤其是那些需要让多个AI智能体协同工作、或者构建复杂业务流程的应用,那你大概率已经听过或者用过LangChain。LangChain确实是个好框架&#xf…...

Driver Store Explorer完全指南:轻松清理Windows驱动存储,让系统更流畅

Driver Store Explorer完全指南:轻松清理Windows驱动存储,让系统更流畅 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是不是经常发现Windows系统盘空间越来越…...

阿里健康年营收342亿:净利19亿 CFO屠燕武辞职

雷递网 雷建平 5月14日阿里健康(股份代号:00241)今日发布截至2026年3月31日的财报。财报显示,截至2026年3月31日的年度,阿里健康营收为342.55亿元,较上年同期的306亿元增长12%。截至2026年3月31日的年度&am…...

OpencvSharp 算子学习教案之 - Cv2.Accumulate

OpencvSharp 算子学习教案之 - Cv2.Accumulate 大家好,Opencv在很多工程项目中都会用到,而OpencvSharp则是以C#开发与实现的Opencv操作库,对.NET开发人员友好,但很多API的中文资料、应用场景及常见坑点等缺乏系统性归纳&#xff…...

企业级API网关实战:从Spring Cloud Gateway到微服务治理全解析

1. 项目概述:从单体应用到服务枢纽的演进在微服务架构成为主流的今天,一个稳定、高效且功能丰富的API网关(API Gateway)是连接前端应用与后端众多服务的核心枢纽。我最近在梳理团队的技术栈时,深入研究了adaline/gatew…...

AI Agent技能开发实战:将安全审计工具封装为智能体可调用模块

1. 项目概述:从代码仓库到AI技能生态的跨越最近在GitHub上闲逛,发现了一个挺有意思的项目:nsasoft/nsauditor-ai-agent-skill。乍一看,这名字有点“缝合怪”的感觉,把“nsasoft”、“nsauditor”、“AI Agent”和“ski…...

Angular 响应式原理深度解析:核心机制与源码解读

一、前言Angular 响应式原理深度解析:核心机制与源码解读。本文深入源码层面,剖析核心设计原理,帮你从"会用"升级到"精通"。二、核心原理深度剖析2.1 数据结构设计// Angular 核心数据结构与算法 // 理解 Angular 的底层…...

Claude与OpenClaw整合指南:AI代码生成与自动化执行实战

1. 项目概述与核心价值最近在开发者社区里,一个名为“Claude-Code-x-OpenClaw-Guide-Zh”的项目引起了我的注意。乍一看这个标题,可能有些朋友会觉得它像是一个普通的工具集合或者文档翻译。但当我深入探究其背后的代码仓库和社区讨论后,我发…...

基于MCP协议构建AI可访问的数字基础设施安全暴露服务器

1. 项目概述:一个暴露数字基础设施的MCP服务器最近在折腾AI Agent的生态,发现一个挺有意思的项目,叫apifyforge/digital-infrastructure-exposure-mcp。光看这个名字,可能有点云里雾里,但如果你也在研究如何让AI更深入…...

Doris 进阶指南:从小项目到生产级系统的完整路径

一、前言Doris 进阶指南:从小项目到生产级系统的完整路径。本文深入源码层面,剖析核心设计原理,帮你从"会用"升级到"精通"。二、核心原理深度剖析2.1 数据结构设计// Doris 核心数据结构与算法 // 理解 Doris 的底层数据…...

基于YOLO26深度学习的钢铁腐蚀生锈识别检测系统(项目源码+数据集+模型权重+UI界面+python+深度学习+远程环境部署)

摘要 钢铁材料在工业基础设施中广泛应用,但其长期暴露于潮湿、氧化环境中极易发生腐蚀生锈现象,严重影响结构安全与使用寿命。为实现钢铁腐蚀区域的自动化检测,本研究基于YOLO26目标检测算法构建了一套钢铁腐蚀识别系统。系统采用单类别检测…...

Arm虚拟中断控制器(ICV)架构与寄存器解析

1. Arm虚拟中断控制器架构概述在Armv8/v9架构的虚拟化环境中,虚拟中断控制器(ICV)作为关键组件,负责为虚拟机提供独立的中断管理能力。与传统物理中断控制器(GIC)相比,ICV通过硬件辅助的虚拟化技术,实现了中断资源的隔离与虚拟化。…...

CircuitPython音频输出与PWM伺服电机控制实战指南

1. 项目概述与核心价值如果你正在用像Adafruit的Feather M0、ItsyBitsy或者Circuit Playground Express这类小巧的微控制器板子做项目,想让它们“开口说话”或者“动手干活”,那么音频输出和伺服电机控制就是你绕不开的两项核心技能。前者能让你的项目发…...

YOLO26驱动的足球比赛多目标检测系统:球员、守门员、裁判与足球的实时识别(项目源码+数据集+模型权重+UI界面+python+深度学习+远程环境部署)

摘要 足球作为全球最受欢迎的体育运动之一,其数字化分析对于战术研究、运动员评估和比赛裁判具有重要意义。本文基于YOLO目标检测算法,构建了一套足球运动员识别检测系统,实现对比赛场景中足球、守门员、球员和裁判四类目标的自动检测与定位…...

无代码物联网开发实战:WipperSnapper与Adafruit IO快速构建数据采集系统

1. 项目概述:当硬件开发告别代码如果你和我一样,对物联网项目充满热情,但又时常被嵌入式编程的编译、烧录、调试劝退,那么今天聊的这个工具,可能会彻底改变你的工作流。我们不再需要为读取一个按键的状态去写几行digit…...

2026年,你的企业为什么还不会用AI发稿?技术人深度拆解Infoseek媒体库

最近GitHub上又一个开源项目火了,能自动生成并发布技术博客。这让我想到,在我们讨论AI取代程序员的同时,另一个领域的“自动化”早已跑在了前面——企业的媒体内容发布。很多技术团队还在手动找渠道、求小编,而一些市场部同事&…...

终极指南:4步让旧Mac运行最新macOS的完整教程

终极指南:4步让旧Mac运行最新macOS的完整教程 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 还在为你的老Mac无法升级最新系统而烦恼吗&#xff…...

三步完成抖音内容高效备份:免费无水印下载工具完全指南

三步完成抖音内容高效备份:免费无水印下载工具完全指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback supp…...

小爱音箱变身智能音乐中心:3步实现语音控制本地与在线音乐播放

小爱音箱变身智能音乐中心:3步实现语音控制本地与在线音乐播放 【免费下载链接】xiaomusic 使用小爱音箱播放音乐,音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic 你是否厌倦了小爱音箱有限的音乐资源&…...

终极艾尔登法环性能优化工具:帧率解锁与视野扩展完全指南

终极艾尔登法环性能优化工具:帧率解锁与视野扩展完全指南 【免费下载链接】EldenRingFpsUnlockAndMore A small utility to remove frame rate limit, change FOV, add widescreen support and more for Elden Ring 项目地址: https://gitcode.com/gh_mirrors/el/…...

RAG向量存储原理(余弦相似度、欧氏距离、ANN近似最近邻、HNSW原理、混合检索)

文章目录深入理解 RAG 向量存储原理一、什么是 RAG?二、RAG 的核心流程三、什么是向量(Vector)四、Embedding 的本质五、向量空间(Vector Space)六、为什么高维向量能表达语义七、Chunk(文本切块&#xff0…...

电子墨水屏驱动芯片IL0376F与SSD1681选型与设计实战

1. 项目概述与核心价值如果你正在为你的物联网设备、电子阅读器或者智能家居终端寻找一种超低功耗、阳光下可视性极佳的显示方案,那么电子墨水屏(E-Ink)几乎是唯一的选择。但当你真正开始动手,从琳琅满目的屏幕型号和驱动方案中挑…...