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

Vue系列面试题

大家好,我是有用就扩散,有用就点赞。

1.Vue中组件间有哪些通信方式?

父子组件通信:

(1)props | $emit (接收父组件数据 | 传数据给父组件)

(2)ref | $refs(给普通的DOM元素或者子组件注册引用信息 | 获取通过ref注册的引用)

(3)$parent | $children(获取当前组件的父组件实例 | 获取当前组件的子组件实例)

多层级组件通信:

(1)provide | $inject(提供子组件要使用的数据 | 子组件获取父组件定义的数据)

(2)$attrs | l i s t e n e r s (获取一个组件没有声明 p r o p 时所包含的数据,搭配 i n h e r i t A t t r s : f a l s e 使用,设置继承 listeners(获取一个组件没有声明prop时所包含的数据,搭配inheritAttrs:false使用,设置继承 listeners(获取一个组件没有声明prop时所包含的数据,搭配inheritAttrs:false使用,设置继承attrs默认行为关闭 | 获取包含父作用域中的事件监听器)

非关系组件通信:

(1)(利用vue注册自定义事件)$emit | $on(发送数据 | 获取数据)

(2)Vuex 数据全局状态管理

  • state单一状态树(mapState获取多个状态,state获取数据)

  • mutation 更改Vuex的store中的状态的唯一方法(commit设置数据)

  • getter接受state作为其第一个参数

  • actions处理异步逻辑

(3)ocalstorage和sessionstorage用作存储数据

2.Vue中v-show和v-if的区别是什么?

v-show:是渲染组件,然后改变组件的display为block或none

v-if:是惰性渲染机制,在属性初始为false时,组件就不会被渲染,直到条件为true,并且切换条件时会触发销毁/挂载组件。

如果需要非常频繁地切换,则使用v-show较好;如果在运行时条件很少改变,则使用v-if较好

3.keep-alive组件有什么作用?

1)keep-alive是vue内置的一个组件,可以使被包含的组件保留状态,避免重新渲染。

2)对于keep-alive组件来说,它拥有两个独有的生命周期钩子函数,分别为activated和deactivated。用keep-alive包裹的组件在切换时不会进行销毁,而是缓存到内存中并执行deactivated钩子函数,命中缓存渲染后会执行actived钩子函数。

3)keep-alive几个重要的属性:

  • include - 只有名称匹配的组件会被缓存
  • exclude - 任何名称匹配的组件不会被缓存
  • max - 最多可以缓存多少组件实例

4.说下Vue生命周期钩子函数?

beforeCreate 组件实例刚被创建,组件属性计算之前

created 组件实例创建完成,属性已绑定,但DOM还未生成,$el属性还不存在

beforeMount 模板编译/挂载之前$el还不存在

mounted 模板编译/挂载之后(不保证组件已在DOM中)

beforeUpdate组件更新之前

updated组件更新之后

beforeDestory 组件销毁前调用

destoryed 组件销毁后调用

Vue3支持多个相同生命周期

setup是围绕beforeCreate和created生命周期钩子运行,在setup()内部调用生命周期钩子

在Vue2生命周期钩子前面加上”on“来访问组件的生命周期钩子

5.Vue中computed和watch区别?

computed是计算属性,依赖其他属性计算值,并且computed的值有缓存,只有当计算值变化才会返回内容。

watch监听到值的变化就会执行回调,在回调中可以进行一些逻辑操作。

6.v-if和v-for为什么不能连用?

1)v-for优先于v-if被解析,从源码中发现,先处理静态节点,在处理once,在处理for,在处理if,代码显示for的优先级比if高,断点调试也证实for优先于if。在vue3中v-if优先于v-for被解析

2)如果同时使用,每次渲染都会先执行循环在判断条件,无论如何循环都避免不了,浪费了性能。

3)要避免出现这种情况,可以采用多层包裹来解决性能损耗问题。例如外层给标签绑定指令v-if或者是内层标签绑定v-if。

7.单页面应用和多页面应用区别及优缺点?

SPA优点:

(1)用户体验好、快,内容的改变不需要重新加载整个页面,基于这一点SPA对服务器压力较小

(2)前后端分离

(3)页面用户体检比较好

SPA缺点:

(1)不利于SEO

(2)导航不可用,需要自己实现导航

(3)初次加载耗时长

(4)页面复杂度提高

MPA优点:

(1)多页面应用对于SEO更加友好

(2)更容易扩展

(3)更易的数据分析

MPA缺点:

(1)程序开发成本高

(2)增加服务端压力,多页面会不停的加载

(3)用户体验相对较差

8.v-model该如何实现?

v-model本质上是v-on和v-bind的语法糖。v-model在内部为不同元素抛出不同的事件,如:

(1)text和textarea元素使用value属性和input事件

(2)checkbox和radio使用checked属性和change事件

(3)select字段将value作为prop并将change作为事件

(4)v-model作用在普通表单上

<input v-model="myvalue" />
//等同于
<input v-bind:value="myvalue"v-on:input="myvalue=$event.target.value"
/>

(5)v-model作用在组件上

//html
<mycom v-model="myvalue"/>
//等同于
<mycom :value="myvalue" @input="(e)=>{myvalue=e}"/>//mycom
<template>
<div><input :value="value" @input="$emit('input',$event.target.value)"/>
</div>
</template>
<script>
export default {props:['value'],
}
</script>

9.mixin和mixis区别?

mixin用于全局混入,会影响到每个组件实例,通常插件都是这样做初始化的。比如:可以全局混入封装好的ajax或者一些工具函数等。

mixins用于单组件,是最常使用的扩展组件的方式。如果多个组件中有相同的业务逻辑,就可以将这些逻辑剥离出来,通过mixins混入代码。比如上拉下拉加载数据这种逻辑等。

mixin的问题?

(1)来源不清晰问题

(2)命名冲突问题

Vue3中不需要mixin,Vue3类似函数式编程,compostion api可以很好解决复用问题

10.Vue2中为什么检测不到数组的变化,如何解决?

由于JavaScript的限制,Vue不能检测数组变动。Vue2中采用Object.defineProperty来实现数据响应式,Object.definePropery虽然可以监听到数组的变化,但是由于在性能和体验的性价比上考虑,Vue2放弃了这个特性。

在Vue2中想实现数组的响应式可以通过全局Vue.set或者实例方法vm.$set来修改,使得数据变得响应式,也可以通过数组的变异方法来实现(push、pop、shift、unshift、splice、sort、reverse)

欢迎各位大哥投稿PR。

相关文章:

Vue系列面试题

大家好&#xff0c;我是有用就扩散&#xff0c;有用就点赞。 1.Vue中组件间有哪些通信方式&#xff1f; 父子组件通信&#xff1a; &#xff08;1&#xff09;props | $emit &#xff08;接收父组件数据 | 传数据给父组件&#xff09; &#xff08;2&#xff09;ref | $refs&a…...

等级保护 总结2

网络安全等级保护解决方案的主打产品&#xff1a; HiSec Insight安全态势感知系统、 FireHunter6000沙箱、 SecoManager安全控制器、 HiSecEngine USG系列防火墙和HiSecEngine AntiDDoS防御系统。 华为HiSec Insight安全态势感知系统是基于商用大数据平台FusionInsight的A…...

关于Redis(热点数据缓存,分布式锁,缓存安全(穿透,击穿,雪崩));

热点数据缓存: 为了把一些经常访问的数据&#xff0c;放入缓存中以减少对数据库的访问频率。从而减少数据库的压力&#xff0c;提高程序的性能。【内存中存储】成为缓存; 缓存适合存放的数据: 查询频率高且修改频率低 数据安全性低 作为缓存的组件: redis组件 memory组件 e…...

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第四十七章 字符设备和杂项设备总结回顾

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…...

C#初级——枚举

枚举 枚举是一组命名整型常量。 enum 枚举名字 { 常量1, 常量2, …… 常量n }; 枚举的常量是由 , 分隔的列表。并且&#xff0c;在这个整型常量列表中&#xff0c;通常默认第一位枚举符号的值为0&#xff0c;此后的枚举符号的值都比前一位大1。 在将枚举赋值给 int 类型的…...

Linux 动静态库

一、动静态库 1、库的理解 库其实是给我们提供方法的实现&#xff0c;如上面的对于printf函数的实现就是在库中实现的&#xff0c;而这个库也就是c标准库&#xff0c;本质也是文件&#xff0c;也有对应的路径 2、区别 静态库是指编译链接时&#xff0c;把库文件的代码全部加入…...

微信小游戏之 三消(一)

首先设定一下 单个 方块 cell 类&#xff1a; 类定义和属性 init 方法 用于初始化方块&#xff0c;接收游戏实例、数据、宽度、道具类型和位置。 onWarning 方法 设置警告精灵的帧&#xff0c;并播放闪烁动作&#xff0c;用于显示方块的警告状态。 grow 方法 根据传入的方向…...

软件测试---Linux

Linux命令使用&#xff1a;为了将来工作中与服务器设备进行交互而准备的技能&#xff08;远程连接/命令的使用&#xff09;数据库的使用&#xff1a;MySQL&#xff0c;除了查询动作需要重点掌握以外&#xff0c;其他操作了解即可什么是虚拟机 通过虚拟化技术&#xff0c;在电脑…...

数据库之数据表基本操作

目录 一、创建数据表 1.创建表的语法形式 2.使用SQL语句设置约束条件 1.设置主键约束 2.设置自增约束 3.设置非空约束 4.设置唯一性约束 5.设置无符号约束 6.设置默认约束 7.设置外键约束 8.设置表的存储引擎 二、查看表结构 1.查看表基本结构 2.查看建表语句 三…...

利用OSMnx求路网最短路径并可视化(二)

书接上回&#xff0c;为了增加多路径的可视化效果和坐标匹配最近点来实现最短路可视化&#xff0c;我们使用图形化工具matplotlib结合OSMnx的绘图功能来展示整个路网图&#xff0c;并特别高亮显示计算出的最短路径。 多起终点最短路路径并计算距离和时间 完整代码#运行环境 P…...

双向门控循环神经网络(BiGRU)及其Python和MATLAB实现

BiGRU是一种常用的深度学习模型&#xff0c;用于处理序列数据的建模和预测。它是基于GRU&#xff08;Gated Recurrent Unit&#xff09;模型的改进版本&#xff0c;通过引入更多的隐藏层和增加网络的宽度&#xff0c;能够更好地捕捉复杂的序列数据中的模式。 背景&#xff1a;…...

【BUG】已解决:ERROR: Failed building wheel for jupyter-nbextensions-configurator

ERROR: Failed building wheel for jupyter-nbextensions-configurator 目录 ERROR: Failed building wheel for jupyter-nbextensions-configurator 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我…...

Unity UGUI 之 自动布局组件

本文仅作学习笔记与交流&#xff0c;不作任何商业用途 本文包括但不限于unity官方手册&#xff0c;唐老狮&#xff0c;麦扣教程知识&#xff0c;引用会标记&#xff0c;如有不足还请斧正 本文在发布时间选用unity 2022.3.8稳定版本&#xff0c;请注意分别 1.什么是自动布局组件…...

网络基础之(11)优秀学习资料

网络基础之(11)优秀学习资料 Author&#xff1a;Once Day Date: 2024年7月27日 漫漫长路&#xff0c;有人对你笑过嘛… 全系列文档可参考专栏&#xff1a;通信网络技术_Once-Day的博客-CSDN博客。 参考文档&#xff1a; 网络工程初学者的学习方法及成长之路&#xff08;红…...

QT自定义无边框窗口(可移动控制和窗口大小调整)

QT是一个功能强大的跨平台开发框架&#xff0c;它提供了丰富的界面设计工具和组件。在界面开发中&#xff0c;QT窗口自带的标题栏无法满足我们的需求。我们就需要自定义无边框窗口&#xff0c;包括自定义标题栏和窗口大小调整功能。本文将介绍如何在QT中实现这些功能。 一、简…...

Typora 【最新1.8.6】版本安装下载教程 (轻量级 Markdown 编辑器),图文步骤详解,免费领取(软件可激活使用)

文章目录 软件介绍软件下载安装步骤激活步骤 软件介绍 Typora 是一款专为 Markdown 爱好者设计的文本编辑器&#xff0c;它结合了简洁的界面设计与强大的 Markdown 渲染能力&#xff0c;为用户提供了一个流畅、高效的写作环境。以下是对 Typora 更详细的介绍&#xff1a; 核心特…...

RxJava 面试题及其答案

以下是一个全面的 RxJava 面试题及其答案&#xff0c;涵盖了 RxJava 的各个方面&#xff0c;包括基本概念、操作符、线程管理、错误处理、背压处理等&#xff1a; 基本概念 1. RxJava 的基本概念和原理是什么&#xff1f; 答案&#xff1a; RxJava 是一个用于响应式编程的库…...

【Rust】所有权OwnerShip

什么是所有权 rust使用由编译器检查的一些规则构成的所有权系统来管理内存。且这不会影响程序的运行效率。 所有权规则 rust中每一个每一个值都有一个owner。在同一时刻&#xff0c;只能有一个owner。当这个owner超过范围&#xff0c;则该值会被丢弃。 String类型 为什么需…...

qt总结--翻金币案例

完成了一个小项目的在qt5.15.2环境下的运行,并使用NSIS editNSIS打包完成.有待改进之处:增加计时功能,随机且能通关功能,过关后选择下一关功能.打包后仅仅有安装包有图标 安装后应用图标并未改变 在qt .pro中有待改进对qt的基本操作和帮助文档有了基本的认识.对C制作小游戏有了…...

最清楚的 BIO、NIO、AIO 详解!

一、什么是 I/O&#xff1f; I/O 描述了计算机系统与外部设备&#xff08;磁盘&#xff09;之间通信的过程。 为了保证操作系统的稳定性和安全性&#xff0c;一个进程的地址空间划分为 用户空间&#xff08;User space&#xff09; 和 内核空间&#xff08;Kernel space &…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...