常见前端面试之VUE面试题汇总一

news2024/12/28 17:50:16

1. Vue 的基本原理

当 一 个 Vue 实 例 创 建 时 , Vue 会 遍 历 data 中 的 属 性 , 用 Object.defineProperty ( vue3.0 使 用 proxy) 将 它 们 转 为 getter/setter,并且在内部追踪相关依赖,在属性被访问和修改时 通知变化。 每个组件实例都有相应的 watcher 程序实例,它会在组 件渲染的过程中把属性记录为依赖,之后当依赖项的 setter 被调用 时,会通知 watcher 重新计算,从而使它关联的组件得以更新。

2. 双向数据绑定的原理

Vue.js 是采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty()来劫持各个属性的 setter,getter,在数 据变动时发布消息给订阅者,触发相应的监听回调。主要分为以下几 个步骤:

1.需要 observe 的数据对象进行递归遍历,包括子属性对象的属性,都加上 setter 和 getter 这样的话,给这个对象的某个值赋值,就会 触发 setter,那么就能监听到了数据变化

2.compile 解析模板指令,将模板中的变量替换成数据,然后初始化 渲染页面视图,并将每个指令对应的节点绑定更新函数,添加监听数 据的订阅者,一旦数据有变动,收到通知,更新视图

3.Watcher 订阅者是 Observer 和 Compile 之间通信的桥梁,主要做 的事情是: ①在自身实例化时往属性订阅器(dep)里面添加自己 ② 自身必须有一个 update()方法 ③待属性变动 dep.notice()通知时,能调用自身的 update()方法,并触发 Compile 中绑定的回调,则成功 成身退。

4.MVVM 作为数据绑定的入口,整合 Observer、Compile 和 Watcher 三者,通过 Observer 来监听自己的 model 数据变化,通过 Compile 来解析编译模板指令,最终利用 Watcher 搭起 Observer 和 Compile 之间的通信桥梁,达到数据变化 -> 视图更新;视图交互变化(input)-> 数据 model 变更的双向绑定效果。

3. MVVM、MVC、MVP 的区别

MVC、MVP 和 MVVM 是三种常见的软件架构设计模式,主要通过分离 关注点的方式来组织代码结构,优化开发效率。

在开发单页面应用时,往往一个路由页面对应了一个脚本文件,所有 的页面逻辑都在一个脚本文件里。页面的渲染、数据的获取,对用户来说 事件的响应所有的应用逻辑都混合在一起,这样在开发简单项目时,可能看不出什么问题,如果项目变得复杂,那么整个文件就会变得冗 长、混乱,这样对项目开发和后期的项目维护是非常不利的。

(1)MVC

MVC 通过分离 Model、View 和 Controller 的方式来组织代码结构。其中 View 负责页面的显示逻辑,Model 负责存储页面的业务数据,以及对相应数据的操作。并且 View 和 Model 应用了观察者模式,当 Model 层发生改变的时候它会通知有关 View 层更新页面。Controller 层是 View 层和 Model 层的纽带,它主要负责用户与应 用的响应操作,当用户与页面产生交互的时候,Controller 中的事 触发器就开始工作了,通过调用 Model 层,来完成对 Model 的修 改,然后 Model 层再去通知 View 层更新。

作为一个开发,工欲善其事必先利其器,mac的加入相信让你开发事半功倍,懂得都懂

(2)MVVM

MVVM 分为 Model、View、ViewModel:

Model 代表数据模型,数据和业务逻辑都在 Model 层中定义;

View 代表 UI 视图,负责数据的展示;

ViewModel 负责监听 Model 中数据的改变并且控制视图的更新,处理 用户交互操作;

Model 和 View 并无直接关联,而是通过 ViewModel 来进行联系的,Model 和 ViewModel 之间有着双向数据绑定的联系。因此当 Model 中 的数据改变时会触发 View 层的刷新,View 中由于用户交互操作而改 变的数据也会在 Model 中同步。

这种模式实现了 Model 和 View 的数据自动同步,因此开发者只需要 专注于数据的维护操作即可,而不需要自己操作 DOM。

(3)MVP

MVP 模式与 MVC 唯一不同的在于 Presenter 和 Controller。在 MVC 模式中使用观察者模式,来实现当 Model 层数据发生变化的时 候,通知 View 层的更新。这样 View 层和 Model 层耦合在一起,当项目逻辑变得复杂的时候,可能会造成代码的混乱,并且可能会对 代码的复用性造成一些问题。MVP 的模式通过使用 Presenter 来实 现对 View 层和 Model 层的解耦。MVC 中的 Controller 只知道 Model 的接口,因此它没有办法控制 View 层的更新,MVP 模式中,View 层的接口暴露给了 Presenter 因此可以在 Presenter 中将 Model 的变化和 View 的变化绑定在一起,以此来实现 View 和 Model 的同步更新。这样就实现了对 View 和 Model 的解耦,Presenter 还包含了其他的响应逻辑。

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

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

相关文章

百度工程师浅析解码策略

作者 | Jane 导读 生成式模型的解码方法主要有2类:确定性方法(如贪心搜索和波束搜索)和随机方法。确定性方法生成的文本通常会不够自然,可能存在重复或过于简单的表达。而随机方法在解码过程中引入了随机性,以便生成更…

idea插件grep console最佳实践

首发博客地址 https://blog.zysicyj.top/ 参考博客:https://blog.csdn.net/ayunnuo/article/details/123997304 效果 配置 具体颜色 日志级别前景色背景色Error#FF0000#370000Warn#FFC033#1A0037Info#00FFF3无Debug#808080无 本文由 mdnice 多平台发布

python schedule库使用教程

schedule 是一个 Python 库,用于在指定的时间间隔或特定时间点执行任务。它可以帮助你创建定时任务,例如定时运行函数、脚本等。以下是一个简单的 schedule 库的使用教程。 安装 首先,你需要安装 schedule 库。你可以使用以下命令通过 pip …

ABBYY FindReader2024免费版电脑PDF格式扫描软件

在日常工作和生活中,我们有时需要将各种格式的文件转换为PDF格式,也可能需要将纸质文件扫描成PDF文档。今天要和大家分享的是PDF扫描软件哪个好,如何把多个扫描件合成一个PDF。 PDF作为目前主流的文件格式之一,在日常生活中我们需…

解决npm安装依赖失败,node和node-sass版本不匹配的问题

npm安装依赖报错: npm ERR! cb() never called! npm ERR! This is an error with npm itself. 一. 问题描述 用npm安装依赖报错: npm ERR! cb() never called! npm ERR! This is an error with npm itself. Please report this error at: npm ERR! …

记录一次wordpress项目的发布过程

背景:发布一套已完成的代码到线上,有完整的代码包,sql文件,环境是linux 宝塔。无wordpress相关经验。 过程:正常的发布代码 问题1:访问自己的域名后跳转到别的域名。 解决: 修改数据表wp_optio…

YOLOv8改进——引入可变形卷积DCNv3

YOLOv8 详解 ✨✨✨YOLOv8详解 【网络结构代码实操】 可变形卷积DCNv1 & DCNv2 ✨✨✨论文及代码详解——可变形卷积(DCNv1) ✨✨✨论文及代码详解——可变形卷积(DCNv2) DCNv3 是InternImage中提出的,DCNv3在DCNv…

centos7.6 firewalld防火墙配置

1、查看系统版本 cat /etc/redhat-release 2、查看防火墙运行状态 systemctl status firewalld 此处可以看到防火墙已开启。 3、关闭开机自启动防火墙 systemctl disable firewalld.service 4、启动防火墙并查看状态,系统默认 22 端口是开启的。 systemctl start f…

HCIP学习--企业网三层架构实验

一、实验拓扑 二、实验要求 内网IP地址172.16.0.0/16合理分配 SW1/2之间互为备份 VRBP/STP/LANTRUNK均使用 所有PC通过DHCP获取ip地址 三、实验步骤 首先思考进行IP地址的规划 配置eht-trunk [sw1]interface Eth-Trunk 0 [sw1-Eth-Trunk0]q [sw1-GigabitEthernet0/0/1]i…

魏副业而战:她的闲鱼号被封了

我是魏哥,与其躺平,不如魏副业而战! 社群小K的闲鱼号被封了。 什么原因呢? 卖书被举报了。 魏哥调侃说,别干了,放弃吧。 她不听,重新开搞…… 这就是真正的网络创业者该有的素养。 魏哥蛮…

安卓系列机型-禁止卸载某个APP 防止误卸载软件 无需root权限

安卓系列机型-禁止安装某软件 防止“沉迷游戏的小孩”操作解析_安卓机器的博客-CSDN博客 上一期讲了如何禁止安装某个app。今天讲下如何禁止卸载某app。正好相反的操作。任何操作有利有弊。主要看使用者如何对待使用。 💔💔💔以腾讯的一款游…

Jenkins自动化部署Vue项目

1、新建item,选择 Freestyle project 2、源码管理选择git,输入git仓库地址和授权账号,并指明要部署的分支 3、构建选择 Execute shell,输入vue项目打包命令 命令示例: source /etc/profile node -v npm config set re…

内容分发网络CDN与应用程序交付网络ADN之间的异同

当您想要提高网站性能时,需要考虑许多不同的配置和设施,CDN和ADN是我们常遇见的几种选项之一。“CDN”指“内容分发网络”,而“ADN”指“应用程序交付网络”,但他们两者很容易被混淆,虽然它们的功能和作用都有较大差异…

​山东省图书馆典藏《乡村振兴战略下传统村落文化旅游设计》鲁图中大许少辉博士八一新书

​山东省图书馆《乡村振兴战略下传统村落文化旅游设计》鲁图中大许少辉博士八一新书

FastDFS与Nginx结合搭建文件服务器,并实现公网访问【内网穿透】

文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…

arthas-安装

window环境 在线安装 进入到对应的目录,cmd 下载jar包 curl -O https://arthas.aliyun.com/arthas-boot.jar 运行 java -jar arthas-boot.jar 该问题是没有运行的java项目,启动idea运行一个java项目,重新执行 选择要监听的端口号 输入ar…

【2023七夕】星河漫舞,七夕的璀璨之夜。分享:七夕表白的前端特效(附完整原代码+详细注释),情不知何起,却一往情深。愿天下有情人终成眷属

满山遍野你的脸庞,唯有遗忘是最漫长。 又一年的七夕了,今年,你还是孤单一人吗? … … 若是的话,咱们可是一个阵营的!!! 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿…

快妥稳!户外拍摄,5G黑科技更给力!

随着新媒体时代的到来,“户外实景美学”已然成为影视创作打磨爆款作品、衍生荧屏效应的一把“杀手锏”。恢弘山川、烟雨江南、异域小城、古朴村落……从一方影棚再到“天然片场”,主打一个“身临其境”般更加真实的视听体验。 杭州浙文影业影视公司是一家…

SRM系统交货协同管理:优化供应链交付流程

供应链的交货协同管理对于企业的运作至关重要。为了实现高效、准时的交付,越来越多的企业开始采用供应关系管理SRM系统来优化交货协同管理。 一、什么是SRM系统交货协同管理? SRM系统交货协同管理是指利用SRM系统来协调和管理供应链中各个参与方在交货过…

innovus加decap如何避免drc问题

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 加decap常见的问题就是跟regular wire产生drc,调试如下命令能够避免这类drc。 setFillerMode -add_fillers_with_drc false -fitGap false -ecoMode true