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

Vue 常见面试题(一)

目录

1、Vue 的最大的优势是什么?(必会)

2、Vue 和 jQuery 两者之间的区别是什么?(必会)

3、MVVM 和 MVC 区别是什么?哪些场景适合?(必会)

1、基本定义

2、使用场景

3、两者之间的区别

4、Vue 数据双向绑定的原理是什么?(必会)

5、Object.defineProperty 和 Proxy 的区别(必会)

6、Vue 生命周期总共分为几个阶段?(必会)

7、第一次加载页面会触发哪几个钩子函数?(必会)

8、请说下封装 Vue 组件的过程?(必会)

9、Vue 组件如何进行传值的? (必会)

10、组件中写 name 选项有什么作用?(必会)


1、Vue 的最大的优势是什么?(必会)

Vue 作为一款轻量级框架、简单易学、双向数据绑定、组件化、数据和结构的分离、虚拟
DOM、运行速度快,并且作者是中国人尤雨溪,对应的 API 文档对国内开发者优化,作为前端开
发人员的首选入门框架
Vue 的优势:
1、Vue.js 可以进行组件化开发,使代码编写量大大减少,读者更加易于理解。
2、Vue.js 最突出的优势在于可以对数据进行双向绑定。
3、使用 Vue.js 编写出来的界面效果本身就是响应式的,这使网页在各种设备上都能
显示出非常好看的效果。
4、相比传统的页面通过超链接实现页面的切换和跳转,Vue 使用路由不会刷新页面。
5、vue 是单页面应用,使页面局部刷新,不用每次跳转页面都要请求所有数据和 dom,
这样大大加快了访问速度和提升用户体验。
6、而且他的第三方 UI 组件库使用起来节省很多开发时间,从而提升开发效率。

2、Vue 和 jQuery 两者之间的区别是什么?(必会)

1、jQuery 介绍:
jQuery 曾经也是现在依然最流行的 web 前端 js 库,可是现在无论是国内还是国外他的使用
率正在渐渐被其他的 js 库所代替,随着浏览器厂商对 HTML5 规范统一遵循以及 ECMA6 在浏览器
端的实现,jQuery 的使用率将会越来越低
3、vue 和 jQuery 区别:
3.1)vue 和 jQuery 对比 jQuery 是使用选择器()选取 DOM 对象,对其进行赋值、取值、
事件绑定等操作,其实和原生的 HTML 的区别只在于可以更方便的选取和操作 DOM 对象,而数
据和界面是在一起的
3.2)比如需要获取 label 标签的内容:)选取 DOM 对象,对其进行赋值、取值、事件绑
定等操作,其实和原生的 HTML 的区别只在于可以更方便的选取和操作 DOM 对象,而数据和界
面是在一起的
3.3)比如需要获取 label 标签的内容:(“lable”).val();,它还是依赖 DOM 元素的值。 Vue
则是通过 Vue 对象将数据和 View 完全分离开来了 对数据进行操作不再需要引用相应的 DOM 对象,可以说数据和 View 是分离的,
他们通过 Vue 对象这个 vm 实现相互的绑定,这就是传说中的 MVVM

3、MVVM 和 MVC 区别是什么?哪些场景适合?(必会)

1、基本定义

1.1)MVVM 基本定义
MVVM 即 Model-View-ViewModel 的简写,即模型-视图-视图模型,模型(Model)指
的是后端传递的数据,视图(View)指的是所看到的页面,视图模型(ViewModel)是 mvvm 模式的核
心,它是连接 view 和 model 的桥梁。它有两个方向:
1.1.1)一是将模型(Model)转化成视图(View),即将后端传递的数据转化成所看到的
页面,实现的方式是:数据绑定,
1.1.2)二是将视图(View)转化成模型(Model),即将所看到的页面转化成后端的数据。
实现的方式是:DOM 事件监听,这两个方向都实现的,我们称之为数据的双向绑定
1.2)MVC 基本定义
MVC 是 Model-View- Controller 的简写。即模型-视图-控制器。M 和 V 指的意思和
MVVM 中的 M 和 V 意思一样。C 即 Controller 指的是页面业务逻辑,使用 MVC 的目的就是将 M
和 V 的代码分离。MVC 是单向通信。也就是 View 跟 Model,必须通过 Controller 来承上启下

2、使用场景

主要就是 MVC 中 Controller 演变成 MVVM 中的 viewModel,MVVM 主要解决了 MVC 中
大量的 DOM 操作使页面渲染性能降低,加载速度变慢,影响用户体验,vue 数据驱动,通过数
据来显示视图层而不是节点操作, 场景:数据操作比较多的场景,需要大量操作 DOM 元素时,
采用 MVVM 的开发方式,会更加便捷,让开发者更多的精力放在数据的变化上,解放繁琐的操
作 DOM 元素

3、两者之间的区别

MVC 和 MVVM 其实区别并不大,都是一种设计思想,MVC 和 MVVM 的区别并不是 VM
完全取代了 C,只是在 MVC 的基础上增加了一层 VM,只不过是弱化了 C 的概念,ViewModel
存在目的在于抽离 Controller 中展示的业务逻辑,而不是替代 Controller,其它视图操作业务等还
是应该放在 Controller 中实现,也就是说 MVVM 实现的是业务逻辑组件的重用,使开发更高效,
结构更清晰,增加代码的复用性

4、Vue 数据双向绑定的原理是什么?(必会)

V ue.js 是采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty()来劫持
各个属性的 setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。
1、需要 observe 的数据对象进行递归遍历,包括子属性对象的属性,都加上 setter 和 getter,
这样的话,给这个对象的某个值赋值,就会触发 setter,那么就能监听到了数据变化
2、compile 解析模板指令,将模板中的变量替换成数据,然后初始化渲染页面视图,并将每
个指令对应的节点绑定更新函数,添加监听数据的订阅者,一旦数据有变动,收到通知,更新视
3、Watcher 订阅者是 Observer 和 Compile 之间通信的桥梁,主要做的事情是:
3.1)在自身实例化时往属性订阅器(dep)里面添加自己
3.3)待属性变动 dep.notice()通知时,能调用自身的 update()方法,并触发 Compile 中
绑定的回调,则功成身退。
4、MVVM 作为数据绑定的入口,整合 Observer、Compile 和 Watcher 三者,通 Observer 来监
听自己的 model 数据变化,通过 Compile 来解析编译模板指令,最终利用 Watcher 搭起 Observer
和 Compile 之间的通信桥梁,达到数据变化 -> 视图更新;视图交互变化(input) -> 数据 model
变更的双向绑定效果

5、Object.defineProperty 和 Proxy 的区别(必会)

Object.defineProperty 和 Proxy 的区别如下:
1、Proxy 可以直接监听对象而非属性;
2、Proxy 可以直接监听数组的变化;
3、Proxy 有多达 13 种拦截方法,不限于 apply、ownKeys、deleteProperty、has 等等是
Object.defineProperty 不具备的
4、Proxy 返回的是一个新对象,我们可以只操作新的对象达到目的,而
Object.defineProperty 只能遍历对象属性直接修改
5、Proxy 作为新标准将受到浏览器厂商重点持续的性能优化,也就是传说中的新标准的
性能红利
6 Object.defineProperty 兼容性好,支持 IE9,而 Proxy 的存在浏览器兼容性问题,而且
无法用 polyfill 磨平,因此 Vue 的作者才声明需要等到下个大版本( 3.0 )才能用 Proxy 重写

6、Vue 生命周期总共分为几个阶段?(必会)

Vue 实例从创建到销毁的过程,就是生命周期。也就是从开始创建、初始化数据、编译模
板、挂载 Dom→渲染、更新→渲染、卸载等一系列过程,我们称这是 Vue 的生命周期。
1、beforeCreate
在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用
2、created
在实例创建完成后被立即调用。在这一步,实例已完成以下的配置:数据观测 (data
observer)属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不
可见
3、beforeMount
在挂载开始之前被调用:相关的 render 函数首次被调用
4、mounted
el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子,如果 root 实例挂载了一
个文档内元素,当 mounted 被调用时 vm.$el 也在文档内
5、beforeUpdate
数据更新时调用,发生在虚拟 DOM 打补丁之前。这里适合在更新之前访问现有的 DOM,
比如手动移除已添加的事件监听器,该钩子在服务器端渲染期间不被调用,因为只有初次渲染会
在服务端进行
6、updated
北京市顺义区京顺路 99 号·黑马程序员 www.itheima.com
第 222 页 共 348 页 由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子
7、activated
keep-alive 组件激活时调用。该钩子在服务器端渲染期间不被调用
8、deactivated
keep-alive 组件停用时调用。该钩子在服务器端渲染期间不被调用
9、beforeDestroy
实例销毁之前调用。在这一步,实例仍然完全可用。该钩子在服务器端渲染期间不被
调用
10、destroyed
Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监
听器会被移除,所有的子实例也会被销毁。该钩子在服务器端渲染期间不被调用
11、errorCaptured(2.5.0+ 新增)
当捕获一个来自子孙组件的错误时被调用。此钩子会收到三个参数:错误对象、发生
错误的组件实例以及一个包含错误来源信息的字符串,此钩子可以返回 false 以阻止该错误继续
向上传播

7、第一次加载页面会触发哪几个钩子函数?(必会)

当页面第一次页面加载时会触发 beforeCreate, created, beforeMount, mounted 这几个钩子函

8、请说下封装 Vue 组件的过程?(必会)

首先,组件可以提升整个项目的开发效率。能够把页面抽象成多个相对独立的模块,解决
了我们传统项目开发:效率低、难维护、复用性等问题
1、分析需求:确定业务需求,把页面中可以服用的结构,样式以及功能,单独抽离成一个
文件,实现复用
2、具体步骤:使用 Vue.extend 方法创建一个组件,然后使用 Vue.component 方法注册组件,
子组件需要数据,可以在 props 中接受定义,而子组件修改好数据后,想把数据传递给父组件,
可以采用$emit 方法

9、Vue 组件如何进行传值的? (必会)

1、父组件向子组件传递数据
父组件内设置要传的数据,在父组件中引用的子组件上绑定一个自定义属性并把数据
绑定在自定义属性上,在子组件添加参数 props 接收即可
2、子组件向父组件传递数据
子组件通过 vue 实例方法$emit 进行触发并且可以携带参数,父组件监听使用@(v-on)
进行监听,然后进行方法处理
3、非父子组件之间传递数据
3.2)在组件中 created 中订阅方法 eventBus.$on("自定义事件名",methods 中的方法名)
3.3) 在另一个兄弟组件中的 methods 中写函数,在函数中发布 eventBus 订阅的方法
eventBus.$emit("自定义事件名”)
3.4) 在组件的 template 中绑定事件(比如 click)

10、组件中写 name 选项有什么作用?(必会)

1、项目使用 keep-alive 时,可搭配组件 name 进行缓存过滤
2、DOM 做递归组件时需要调用自身 name
3、vue-devtools 调试工具里显示的组见名称是由 vue 中组件 name 决定的

相关文章:

Vue 常见面试题(一)

目录 1、Vue 的最大的优势是什么?(必会) 2、Vue 和 jQuery 两者之间的区别是什么?(必会) 3、MVVM 和 MVC 区别是什么?哪些场景适合?(必会) 1、基本定义 2…...

Elasticsearch 的 scroll API

对于大量数据,可以使用 Elasticsearch 的 scroll API 来分批次地读取数据,以避免一次性读取所有数据造成的内存负担。这段代码使用滚动查询(scroll)来分批次地读取数据。首先,它发送初始的搜索请求,并获取第…...

Leedcode刷题——2 字符串

注&#xff1a;以下代码均为c 1. 反转字符串 void reverseString(vector<char>& s) {int n s.size();int i, j;for(i 0, j n - 1; i < j; i, j--){swap(s[i], s[j]);}}2. 整数反转 int reverse(int x) {int rev 0;while(x ! 0){if(rev < INT_MIN / 10 || …...

2016年认证杯SPSSPRO杯数学建模B题(第二阶段)多帧图像的复原与融合全过程文档及程序

2016年认证杯SPSSPRO杯数学建模 B题 多帧图像的复原与融合 原题再现&#xff1a; 数码摄像技术被广泛使用于多种场合中。有时由于客观条件的限制&#xff0c;拍摄设备只能在较低的分辨率下成像。为简单起见&#xff0c;我们只考虑单色成像。假设成像的分辨率为 32 64&#x…...

WMI接口设计实现

WMI是Windows操作系统管理数据和操作的基础设施&#xff0c;系统管理员可以使用VB Script、PowerShell及Windows API&#xff08;C、C#等&#xff09;管理本地或远程计算机。 使用WMI框架应用程序可以直接访问EC RAM、 I/O端口、Memory地址、寄存器、Setup NV设定值&#xff0c…...

前端项目,个人笔记(二)【Vue-cli - 引入阿里矢量库图标 + 吸顶交互 + setup语法糖】

目录 1、项目中引入阿里矢量库图标 2、实现吸顶交互 3、语法糖--<script setup> 3.1、无需return 3.2、子组件接收父组件的值-props的使用 3.3、注册组件 1、项目中引入阿里矢量库图标 步骤一&#xff1a;进入阿里矢量库官网中&#xff1a;iconfont-阿里巴巴矢量…...

OpenCV 介绍使用

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇:OpenCV4.9.0开源计算机视觉库使用简要说明 下一篇: OpenCV&#xff08;开源计算机视觉库&#xff1a;http://opencv.org&#xff09;是一个开源库&#xff0c;包含数百种计算机视觉算法。…...

Python 10个面试题实例

当然&#xff01;以下是10个Python面试题及其示例解决方案的中题目&#xff1a; 1.反转字符串: string "Hello, World!" reversed_string string[::-1] print(reversed_string)2.检查字符串是否为回文: def is_palindrome(string):return string string[::-1]r…...

Python:熟悉简单的skfuzzy构建接近生活事件的模糊控制器”(附带详细注释说明)+ 测试结果

参考资料&#xff1a;https: // blog.csdn.net / shelgi / article / details / 126908418 ————通过下面这个例子&#xff0c;终于能理解一点模糊理论的应用了&#xff0c;感谢原作。 熟悉简单的skfuzzy构建接近生活事件的模糊控制器 假设下面这样的场景, 我们希望构建一套…...

opencv函数使用查找

opencv官方文档地址&#xff1a;https://docs.opencv.org/4.x/index.html 先选对应的版本opencv-python 以这个函数为例子 model cv2.face.LBPHFaceRecognizer.create() 点开后找face类的LBP里面就有create函数的用法...

使用 pypdf 快速切分 PDF 文件

categories: [Python] tags: Python MacOS 写在前面 最近有小伙伴问我怎么把 PDF 文档切分成两个大小相近的 PDF文档, 要是在 mac 上, 直接无脑预览就行了, 但是这样不够跨平台, 之后我也尝试过 pymupdf, 但是奈何不支持 arm 架构, 后来还是用 Python 原生的 pypdf 了. 有 AI…...

Avalonia(11.0.2)+.NET6 打包运行到银河麒麟V10桌面系统

操作系统配置 项目结构 .net版本 这次我们是在银河麒麟V10系统上打包运行Avalonia(11.0.2)+.NET6.0的程序 开始打包 准备Linux下的桌面快捷方式以及图标 调整AvaloniaApplication2.Desktop.csproj的配置项,重点看下图红色线圈出来的部分,里面涉及到了LinuxPath的设置。完整的配…...

Mac nvm install failed python: not found

报错 $>./configure --prefix/Users/xxx/.nvm/versions/node/v12.22.12 < ./configure: line 3: exec: python: not found nvm: install v12.22.12 failed!解决方法 到 App 文件夹&#xff0c;并且打开 cd /System/Applications/Utilities/ open .记得改完 Rosetta 之…...

C语言基础知识复习(考研)

&#xff08;1&#xff09;C语言文件操作 1 什么是文件 文件有不同的类型&#xff0c;在程序设计中&#xff0c;主要用到两种文件&#xff1a; (1)程序文件。包括源程序文件(后缀为.c)、目标文件(后缀为.obj)、可执行这种文件的内容是程序代码。 (2)数据文件。文件的内容不是…...

Prometheus Grafana 配置仪表板

#grafana# 其实grafana提供了丰富的Prometheus数据源的仪表板&#xff0c;基本上主流的都有&#xff0c;通过下面官方地址可查阅 Dashboards | Grafana Labs 这里举例说明&#xff0c;配置node_exporter仪表板 首先&#xff0c;在上面的网站搜索 node 可以查到蛮多的仪表板…...

docker 哲学 - 网络桥接器、容器网络接口 、容器间的通信方式

1、解释 docker0 veth eth 2、vethXX 和 ethXX 是肯定一一对应吗 比如 eth1 对应 veth1 3、如果 A容器使用 默认创建方式 。定义他内部网络为 eth0&#xff0c;容器B使用 --network 连上 已创建的网络 172.89.2.1 。此时假设 B的 ip是 172.89.2.2 &#xff0c;容器网络接口是 e…...

Python 将HTML转为PDF、图片、XML、XPS格式

网页内容是信息传播的主要形式之一。在Web开发中&#xff0c;有时候我们需要将HTML文件以不同的格式保存或分享&#xff0c;比如PDF、图片&#xff08;如PNG或JPEG&#xff09;、XML或XPS等。这些格式各有优势&#xff0c;适合不同的用途。在这篇文章中&#xff0c;我们将介绍如…...

排序算法记录(冒泡+快排+归并)

文章目录 前言冒泡排序快速排序归并排序 前言 冒泡 快排 归并&#xff0c;这三种排序算法太过经典&#xff0c;但又很容易忘了。虽然一开始接触雀氏这些算法雀氏有些头大&#xff0c;但时间长了也还好。主要是回忆这些算法干了啥很耗时间。 如果在笔试时要写一个o(nlogn)的…...

简单聊聊如何更优雅地初始化对象:构造函数、Builder模式和静态工厂方法比较

大家好&#xff0c;我是G探险者。 在平时的java编程中&#xff0c;你肯定会有过对一些实体对象进行初始化的set操作&#xff0c;有的对象的属性较少可能还好点&#xff0c;当一个对象拥有许多属性时&#xff0c;通常的初始化方式可能显得笨拙而不直观&#xff0c;代码写的很不…...

跳过mysql权限验证来修改密码-GPT纯享版

建议重新配置一遍&#xff0c;弄成功好多次了&#xff0c;每次都出bug&#xff0c;又要重新弄&#xff0c;不是过期就是又登不进去了&#xff0c;我服了 电脑配置MySQL环境&#xff08;详细&#xff09;这个哥们的10min配完&#xff0c;轻轻松松&#xff0c; 旧方法&#xff…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

laravel8+vue3.0+element-plus搭建方法

创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...