Vue经典面试题源码级分析【一】

01-Vue组件通信方式有哪些

  • 父子组件 : props/ emit/ $parent / ref / $attrs
    • $attrs: https://cn.vuejs.org/api/component-instance.html#attrs
  • 兄弟组件:$parent / $root / eventbus / vuex
  • 跨层级关系:eventbus / vuex / provide + inject

父子组件通信上:
props/ emit 是最常用的父子间通信的方法,也可以通过$attrs去透传属性,父组件可以通过ref来访问子组件、子组件也可以通过$parent来获取父组件
兄弟组件通信上:
兄弟组件没有实际的联系,需要建立一个中间人。可以通过$parent / $root / eventbus / vuex 来解决
跨层级的化只能通过 eventbus / vuex / provide + inject 来处理
还有一些方法是vue3里面废除了的,比如$children$on,在vue3中也没有内置的EventBus,需要我们手动去实现,不如直接使用全局状态管理的库

02-v-if和v-for哪个优先级更高

  • 首先 v-if 和 v-for 不应该放在一起上
  • 在vue2中v-for优先级高,会造成for循环很多次
  • 在vue3中v-if优先级高,也会造成if中拿不到for循环的值
  • 在实践中,可以用template包裹一下

03-简述Vue生命周期以及每个阶段做的事

首先看一遍生命周期文档:https://cn.vuejs.org/api/composition-api-lifecycle.html

  1. 定义:vue生命周期是为了描述组件从挂载渲染到卸载的节点的钩子函数
  2. 阶段:创建前后、挂载前后、更新前后、卸载前后、keepAlive的isActiveddeactived,还有vue3新增的一些:renderTracked 响应式依赖被收集时调用、renderTriggered响应式依赖被触发时调用,serverPrefetch ssr only,组件实例在服务器上被渲染前调用、onErrorCaptured()捕获后代组件传递的错误时调用
  3. 每个钩子函数做的事情
    • beforeCreate: 插件开发中执行一些初始化任务
    • created:组件初始化完毕,可以访问各种数据,获取接口等
    • mounted:dom已经创建完成, 可以访问dom元以及子组件等
    • beforeUpdate、updated获取更新前后的状态
    • beforeUnmounted、unmounted:清理副作用:比如计时器、事件监听、服务器的连接等

💥💥附加题

  1. vue3中setup中为什么没有beforeCreatecreated?

    setup执行顺序在他两个前面,只执行一次,创建的是data和method。再去使用他两个就 没有意义了

04-双向绑定原理

先看文档:https://cn.vuejs.org/guide/components/v-model.html#component-v-model

v-modol在原生组件input,和自定义组件会有两种不同的处理方式:
1,在input上

<input v-model="searchText" />
// 处理后<input:value="searchText"@input="searchText = $event.target.value"/>
  1. 自定义组件
<CustomInput:model-value="searchText"@update:model-value="newValue => searchText = newValue"
/>

我们需要在CoustomInput做两件事情:

  1. 将内部原生 元素的 value attribute 绑定到 modelValue prop
  2. 当原生的 input 事件触发时,触发一个携带了新值的 update:modelValue 自定义事件

手写简易v-model

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><div><button id="myBtn">改变username</button><input type="text" id="myInput"><h1 id="myTitle"></h1></div>
</body>
<script>let userinfo = {username: '小明',};//开始监控watcher();function watcher() {Object.defineProperty(userinfo, "username", {set(value) {updateDom(value);},get(val) {return val;},});}//更新dom数据function updateDom(value) {document.querySelector('#myInput').value = value;document.querySelector('#myTitle').innerHTML = value;}//给input绑定input事件,实时修改username的值document.querySelector('#myInput').oninput = function (e) {let value = e.target.value;userinfo.username = value;}//给button绑定点击事件,修改username的值document.querySelector('#myBtn').onclick = function () {let value = '小明';userinfo.username = value;}
</script></html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/192893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

美容院管理系统服务预约会员小程序效果如何

美容院在美业场景中需求度较高&#xff0c;尤其女性爱美悦己消费逐年增加&#xff0c;如清洁焕肤、祛皱抗衰、激光脱毛等美容项目都有不少需求者。 互联网深入美业行业多年&#xff0c;传统线下经营模式已经很难满足当今客户消费流程&#xff0c;如品牌寻找、服务预约、到店、…

Effective Java解读

Effective Java 第一章 引言第二章 创建和销毁对象第1条&#xff1a;用静态工厂方法代替构造器第2条&#xff1a;遇到多个构造器参数时要考虑使用构建器第3条&#xff1a;用私有构造器或者枚举类型强化Singletion属性第4条&#xff1a;通过私有构造器强化不可实例化的能力第5条…

pandas基础操作2

数据读取 我们想要使用 Pandas 来分析数据&#xff0c;那么首先需要读取数据。大多数情况下&#xff0c;数据都来源于外部的数据文件或者数据库。Pandas 提供了一系列的方法来读取外部数据&#xff0c;非常全面。下面&#xff0c;我们以最常用的 CSV 数据文件为例进行介绍。 …

【LeetCode:1423. 可获得的最大点数 | 滑动窗口】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

微前端实战:打造高效、灵活的前端应用架构

文章目录 一、微前端简介二、微前端的优势1. 高度模块化2. 独立部署3. 易于扩展4. 技术栈无关5. 独立升级 三、微前端的原理四、微前端案例思路《微前端实战》编辑推荐内容简介作者简介目录前言/序言 随着互联网行业的快速发展&#xff0c;前端应用的规模和复杂度也在不断增加。…

windows11 调整鼠标灵敏度方法

首先 我们打开电脑设置 或者在 此电脑/此计算机/我的电脑 右击选择属性 然后 有的电脑 左侧菜单中 直接就有 设备 然后在设备中直接就可以找到 鼠标 选项 调整光标速度即可 如果操作系统和我的一样 可以直接搜索鼠标 然后 选择 鼠标设置 然后 调整上面的鼠标指针速度即可

论文解读--Robust lane detection and tracking with Ransac and Kalman filter

使用随机采样一致性和卡尔曼滤波的鲁棒的车道线跟踪 摘要 在之前的一篇论文中&#xff0c;我们描述了一种使用霍夫变换和迭代匹配滤波器的简单的车道检测方法[1]。本文扩展了这项工作&#xff0c;通过结合逆透视映射来创建道路的鸟瞰视图&#xff0c;应用随机样本共识来帮助消…

网络编程之套接字

端口 && IP 在学习套接字编程之前&#xff0c;我们必须了解一下前缀知识。首先是IP和端口的作用。 在这之前&#xff0c;我们要明白一件事。那就是把数据从一台主机发送到另一台主机&#xff0c;是目的吗&#xff1f;&#xff1f;&#xff1f;当然不是&#xff01;&a…

qt-C++笔记之识别点击鼠标右键、点击位置以及Qt坐标系详解

qt-C笔记之识别点击鼠标右键、点击位置以及Qt坐标系详解 文章目录 qt-C笔记之识别点击鼠标右键、点击位置以及Qt坐标系详解1.示例运行2.event->pos();详解3.event->pos()的坐标系原点4.Qt中的坐标系详解5.QMainWindow::mousePressEvent(event);详解 1.示例运行 截图时鼠…

【SpringMVC】Spring Web MVC入门(一)

文章目录 前言什么是Spring Web MVC&#xff1f;什么是MVC什么是Spring MVC&#xff1f; Spring Boot 和 Spring MVC 的区别什么是Spring Boot&#xff1f;关系和区别 Spring MVC 学习注解介绍1. SpringBootApplication2. RestController3. RequestMapping3.1 RequestMapping 使…

css所有属性介绍

文章目录 1️⃣ CSS属性介绍1.1 CSS3 动画属性&#xff08;Animation&#xff09;1.2 CSS 背景属性&#xff08;Background&#xff09;1.3 CSS 边框属性&#xff08;Border 和 Outline&#xff09;1.4 Box 属性1.5 Color 属性1.6 Content for Paged Media 属性1.7 CSS 尺寸属性…

CyclicBarrier实战应用——批量数据多线程协调异步处理(主线程执行事务回滚)

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; CCyclicBarrier实战应用——批量数据多线程协调异步处理(主线程执行事务…

Linux学习笔记之七(shell脚本的基本语法)

Shell 1、Shell脚本2、常用运算符2、特殊语法4、关于变量的一些命令4.1、echo4.2、export4.3、read4.4、declare/typeset4.5、local4.6、unset 5、基本逻辑语法5.1、if判断5.2、for循环5.3、while循环5.4、case语句 6、函数定义7、多脚本链接 1、Shell脚本 学习shell脚本开发之…

独孤思维:工资加了1000,却被骂懦弱无能

凡是为了工作镀金学历的人&#xff0c;都是为了逃避社会&#xff0c;都是懦弱无能的表现。 昨天有个读者跑来跟我说&#xff0c;本科毕业入职了一家直播公司做场控&#xff0c;结果做了一段时间发现这玩意就算是个高中生都会做。 太没意思了。 所以&#xff0c;决定辞职&…

C-语言每日刷题

目录 [蓝桥杯 2015 省 A] 饮料换购 题目描述 输入格式 输出格式 输入输出样例 # [蓝桥杯 2023 省 A] 平方差 题目描述 输入格式 输出格式 输入输出样例 说明/提示 【样例说明】 [NOIP2001 普及组] 数的计算 题目描述 输入格式 输出格式 输入输出样例 说明/提示 样例 1 解释 数据…

1.1.2.列表标签

一.无序列表 1.格式 ul 是Unordered List(无序列表)的缩写。列表里的项目用 <li> 标签记述。 <ul type"square"><li>1</li><li>2</li><li>3</li> </ul> 2.type属性 Disc是ul中type属性的默认值&#xff0…

【C++】多线程(二):std::mutex std::atomic的使用

这篇文章接着上一篇&#xff0c;继续介绍C中的多线程。 推荐先阅读上一篇 【C】多线程&#xff08;一&#xff09;&#xff1a;std::thread的使用 互斥 我们前面的函数&#xff0c;无论是线程之间&#xff0c;还是线程和主线程之间&#xff0c;都是没有数据交换的。 接下来让…

RK3568平台开发系列讲解(Linux系统篇)netlink 监听广播信息

** 🚀返回专栏总目录 文章目录 一、什么是netlink 机制二、netlink 的使用2.1、创建 socket2.2、绑定套接字2.3、接收数据沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍如何通过 netlink 监听广播信息。 一、什么是netlink 机制 Netlink 是 Linux 内核中…

企业计算机服务器locked1勒索病毒数据恢复,locked1勒索病毒解密流程

随着计算机技术的不断发展&#xff0c;越来越多的企业走向数字化办公时代&#xff0c;计算机技术为企业的生产运营提供了有利条件&#xff0c;但也为企业带来了网络安全威胁。在本月&#xff0c;云天数据恢复中心陆续接到很多企业的求助&#xff0c;企业的速达办公软件遭到了lo…

zemax之初级像差理论与像差校正——像散

1.像散的概念 像散是指轴外物点发出的锥形光束通过光学系统聚焦后&#xff0c;光斑在像面上子午方向与弧矢方向的不一致性。轴外视场光束通过光瞳后&#xff0c;在子午方向与弧矢的光程不相等&#xff0c;造成两个方向光斑分离所形成的弥散斑&#xff0c;称为光学系统的像散。…