面试 Vue 框架八股文十问十答第一期
面试 Vue 框架八股文十问十答第一期
作者:程序员小白条,个人博客
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!
⭐点赞⭐收藏⭐不迷路!⭐
1)MVVM 的理解
MVVM (Model-View-ViewModel) 是一种软件架构模式,旨在分离用户界面的开发(View)和业务逻辑/数据(Model)的开发。MVVM 中的 ViewModel 负责将 Model 中的数据转换成 View 可以直接渲染的形式,同时也接收来自 View 的用户输入,然后更新 Model 中的数据。这种分层的结构使得代码更易于维护和测试。
2)Vue 和 React 的区别,有什么不同?
- 语法差异: Vue 使用模板语法,类似于 HTML,更容易理解和学习。React 使用 JSX,它是 JavaScript 的扩展语法,将 HTML 和 JavaScript 结合在一起。
- 数据绑定: Vue 使用双向数据绑定,通过
v-model
实现。React 采用了单向数据流,通过 props 和 state 进行数据传递。 - 组件通信: Vue 提供了简便的组件通信方式,如 props、自定义事件、provide/inject。React 使用 props 和回调函数进行组件通信。
- 生态系统: React 生态系统更庞大,拥有强大的状态管理库(Redux)、路由库(React Router)等。Vue 提供了 Vuex 进行状态管理,Vue Router 处理路由。
3)Vue2 和 Vue3 有哪些去区别?
- 性能优化: Vue3 使用了 Proxy 替代 Object.defineProperty,提高了性能。引入了编译时优化和Tree-Shaking等特性,减小了包的体积。
- Composition API: Vue3 引入了 Composition API,提供更灵活的组件逻辑复用方式,相较于 Vue2 的选项式 API 更具可维护性。
- Teleport: Vue3 提供了 Teleport,可以方便地在组件外部渲染组件内容,解决了在某些情况下的样式问题。
- 多个根节点: Vue3 放宽了对组件的渲染要求,支持组件有多个根节点。
4)SPA 的理解,有什么优缺点?
- 单页面应用(SPA): SPA 是一种 Web 应用程序或网站,通过 Ajax 或 WebSockets 在用户与应用程序之间异步加载页面内容,避免了整页刷新。
- 优点:
- 流畅的用户体验: 由于只更新局部内容,SPA 提供了更快的用户体验,避免了页面刷新造成的闪烁。
- 减少服务器负担: 服务器只需提供数据,而不用负责页面的渲染,减轻了服务器的负担。
- 前后端分离: 前端和后端可以独立开发,提高了项目的可维护性和可扩展性。
- 缺点:
- 首屏加载慢: SPA 首次加载可能较慢,因为需要加载整个应用程序的代码。
- SEO 难度较大: 搜索引擎对于单页面应用的爬取和索引相对复杂,需要额外的处理。
- 资源占用: SPA 在运行过程中可能占用较多的内存,对于一些资源有限的设备可能存在问题。
5)SPA 和多页面有什么区别?
- SPA(Single Page Application): 整个应用只有一个 HTML 页面,通过 JavaScript 动态更新页面内容,通常使用 AJAX 获取数据。页面的切换不需要重新加载整个页面。
- 多页面应用: 包含多个独立的 HTML 页面,每次用户点击链接时,服务器都会返回一个新的页面。每个页面都是一个独立的文档,通常会包含自己的样式和脚本。
- 区别:
- 加载方式: SPA 只加载一次 HTML 页面,通过路由切换视图;多页面应用每次点击链接都会加载新的 HTML 页面。
- 性能: SPA 在切换页面时较快,因为只加载局部内容;多页面应用每次切换都需要重新加载整个页面。
- 开发复杂度: SPA 开发相对复杂,但有更好的用户体验;多页面应用相对简单,但可能有页面加载的延迟。
6)Vue 的性能优化有哪些?
- 使用虚拟 DOM: Vue通过虚拟 DOM 进行 DOM 操作,减少直接操作真实 DOM 的开销,提高渲染效率。
- 合理使用 v-if 和 v-show: v-if 适用于在运行时条件不经常改变的情况,而 v-show 更适用于频繁切换的情况。
- 列表渲染优化: 使用
v-for
时,给每项元素设置唯一的 key,可以帮助 Vue 更高效地更新 DOM。 - 组件懒加载: 使用 Vue 的异步组件和路由懒加载,只在需要时加载组件,减少首屏加载时间。
- 图片懒加载: 使用插件或自定义指令实现图片懒加载,延迟加载图片,提高页面加载速度。
- 减少不必要的 Watcher: 合理使用 computed 属性替代 watcher,避免过多的数据监听。
- 优化网络请求: 合理使用缓存、CDN 加速,减少请求次数,提高页面加载速度。
7)Vue 生命周期阐述一下
- beforeCreate: 实例刚在内存中被创建,数据观测和事件配置之前。
- created: 实例已经在内存中创建完成,数据观测和事件配置已完成,但尚未挂载到页面上。
- beforeMount: 在挂载开始之前被调用,相关的 render 函数首次被调用。
- mounted: 实例已经挂载到页面上,此时 DOM 元素可见。
- beforeUpdate: 数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。
- updated: 数据更新后调用,发生在虚拟 DOM 重新渲染和打补丁之后。
- beforeDestroy: 实例销毁之前调用,可以在这里进行一些清理工作。
- destroyed: 实例销毁后调用,此时 Vue 实例的所有指令、事件监听都被解绑。
8)Vue 常用的属性、指令有哪些?
- 属性:
data
:定义数据。computed
:计算属性,基于依赖进行缓存。methods
:定义方法。props
:用于接收父组件传递的数据。watch
:监听数据变化执行相应操作。
- 指令:
v-bind
:动态绑定属性。v-model
:实现双向数据绑定。v-if
、v-else
、v-else-if
:条件渲染。v-for
:列表渲染。v-show
:根据条件展示或隐藏元素。v-on
:绑定事件监听器。v-else
:用于条件渲染中的“否”块。
9)Computed 和 Watch 的区别
- Computed:
- 依赖于响应式数据,只有相关依赖发生变化时才会重新计算。
- 缓存计算结果,只有依赖发生变化时才会重新计算。
- 适用于计算一个新值的场景,例如根据多个属性计算衍生属性。
- Watch:
- 更通用,可以监听任何数据的变化。
- 可以执行异步操作,监听数据的变化并进行相应的处理。
- 适用于对数据变化做出响应性操作,如发起网络请求、操作 DOM。
10)Vue 组件怎么实现父子通信
- Props/子组件接收父组件数据: 父组件通过 props 将数据传递给子组件。
<!-- 父组件 -->
<template><child-component :message="parentMessage"></child-component>
</template><script>
export default {data() {return {parentMessage: 'Hello from parent!'};}
}
</script><!-- 子组件 -->
<template><div>{{ message }}</div>
</template><script>
export default {props: ['message']
}
</script>
- 自定义事件/子组件向父组件通信: 子组件通过
$emit
触发自定义事件,父组件通过在子组件上监听这些事件来响应。
<!-- 子组件 -->
<template><button @click="sendMessage">Send Message</button>
</template><script>
export default {methods: {sendMessage() {this.$emit('message-sent', 'Hello from child!');}}
}
</script><!-- 父组件 -->
<template><child-component @message-sent="handleMessage"></child-component>
</template><script>
export default {methods: {handleMessage(message) {console.log(message); // 'Hello from child!'}}
}
</script>
- Vuex/全局状态管理: 使用 Vuex 管理全局状态,实现父子组件之间的通信。
相关文章:
面试 Vue 框架八股文十问十答第一期
面试 Vue 框架八股文十问十答第一期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新! ⭐点赞⭐收藏⭐不迷路!⭐ 1)MVVM 的理解 MVVM (Mod…...
【积微成著】性能测试调优实战与探索(存储模型优化+调用链路分析)| 京东物流技术团队
一、前言 性能测试之于软件系统,是保障其业务承载能力及稳定性的关键措施。以软件系统的能力建设为主线,系统能力设计工作与性能测试工作,既有先后之顺序,亦有相互之影响。以上,在性能测试的场景决策,架构…...
建立分位制,用标准去量化优化效果 - 启动优化为例
Android开发的四年多时间中,逐渐将自己的工作重心从业务移动到小型项目的架构设计,在此过程中代码的书写有了更高的标准和要求,性能优化从此伴随着工作脚步, 为什么要进行性能优化呢? 页面访问时长从1s增加到3s&#…...
Modbus 通信协议 二
Modbus 常用缩写 通用Modbus帧结构 -应用数据单元(ADU) Modbus数据模型 Modbus ADU 和 PDU 的长度 Modbus PDU结构 串行链路上的 Modbus 帧结构 Modbus 地址规则 ASCLL 模式 和 RTU 模式的比较 RTU 模式 RTU 模式位序列 帧格式 帧的标识与鉴别 CRC 循环冗…...
关于系统设计的一些思考
0.前言 当我们站在系统设计的起点,面对一个新的需求,我们该如何开始呢?这是许多处于系统分析与设计领域的新手常常思考的问题。有些人可能会误以为,只要掌握了诸如面向对象、统一建模语言、设计模式、微服务、Serverless、Servic…...
Java 第19章 IO流 课堂练习+本章作业
文章目录 Buffered流拷贝二进制文件创建文件写入文本读取文本文件存读Properties文件 Buffered流拷贝二进制文件 package com.hspedu.chapter19.outputStream;import java.io.*;public class BufferedCopy02 {public static void main(String[] args) {String srcFilePath &q…...
一键制作电子样册,提升企业品牌形象
电子样册作为一种新型的宣传方式,具有许多优势。首先,它打破了传统纸质宣传册的局限性,可以随时随地展示企业的产品和服务。其次,电子样册可以通过多媒体形式展示企业的品牌形象,包括图片、视频、文字等多种形式&…...
Linux 的引导与服务控制
一 开机启动过程 bios加电自检-->mbr-->grub-->加载内核文件-->启动进程 1 bios家电自检 检测硬件是否正常,然后根据bios中的启动项设置,去找内核文件 2 mbr 因为grup太大,第一个扇区存不下所有的grub程序,所以分为2部分指…...
多输入多输出 | MATLAB实现SSA-CNN麻雀算法优化卷积神经网络多输入多输出预测
多输入多输出 | MATLAB实现SSA-CNN麻雀算法优化卷积神经网络多输入多输出预测 目录 多输入多输出 | MATLAB实现SSA-CNN麻雀算法优化卷积神经网络多输入多输出预测预测效果基本介绍模型背景程序设计参考资料 预测效果 基本介绍 MATLAB实现SSA-CNN麻雀算法优化卷积神经网络多输入…...
高端电流检测方案
随着过去传统的“开环”系统被智能和高效率“闭环”设计所取代,准确的电流检测在多种应用中变得越来越重要。常见的电流检测方法,需要将检流电阻串联进被测电流通路,再用放大电路放大检流电阻上的压降。这个放大电路常被称之为电流检测放大器…...
IP地址、子网掩码与网络地址
一、IP地址 在 TCP/IP 体系中,IP 地址是一个最基本的概念。IP地址的作用:实现和网上的其他设备进行通信 IP地址的表示方法 互联网上的每台主机(或路由器)的每个接口都分配一个全世界唯一的IP地址。该IP地址由ICANN分配。 IP地址…...
python 深度学习 记录遇到的报错问题10
本篇继python 深度学习 解决遇到的报错问题9_module d2l.torch has no attribute train_ch3-CSDN博客 一、CUDA error: no kernel image is available for execution on the device CUDA kernel errors might be asynchronously reported at some other API call,so the stackt…...
linux下docker搭建Prometheus +SNMP Exporter +Grafana进行核心路由器交换机监控
一、安装 Docker 和 Docker Compose https://docs.docker.com/get-docker/ # 安装 Docker sudo apt-get update sudo apt-get install -y docker.io# 安装 Docker Compose sudo apt-get install -y docker-compose二、创建配置文件及测试平台是否正常 1、选个文件夹作为自建…...
Github 2023-12-31 开源项目日报 Top10
根据Github Trendings的统计,今日(2023-12-31统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量TypeScript项目3Swift项目1Java项目1HTML项目1Astro项目1Python项目1C项目1Dart项目1Jupyter Notebook项目1C项…...
管程-第三十三天
目录 为什么要引入管程 管程的定义和基本特征 用管程解决生产者消费者问题 结论 本节思维导图 为什么要引入管程 原因:在解决进程的同步与互斥问题时,信号量机制存在编写困难和易出错的问题 能不能设计一种机制,让程序员写程序时不再需…...
嵌入式中断理解
一、概念 中断: 在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行。 中断优先级&#x…...
React16源码: Hooks源码实现
Hooks 1 )概述 Hooks 在 React16.7版本出现的新功能Hooks 改变了整体应用开发的模式,同时开发体验会和以前会变得不一样Hooks 让函数组件具有类组件的能力 在 function component 里面没有this无法保存 state通过 Hooks可以让 function component 代替…...
华为端口隔离高级用法经典案例
最终效果: pc4不能ping通pc5,pc5能ping通pc4 pc1不能和pc2、pc3通,但pc2和pc3能互通 vlan batch 2 interface Vlanif1 ip address 10.0.0.254 255.255.255.0 interface Vlanif2 ip address 192.168.2.1 255.255.255.0 interface MEth0/0/1 i…...
java项目启动jar包启动参数设置端口号
默认启动 java -jar myapp.jar 指定配置文件 java -jar myapp.jar --spring.profiles.activedev 指定端口号 java -jar myapp.jar --server.port8080 后台启动 nohup java -jar myapp.jar --server.port8080 >outlog.log 2>&1 &...
【数据结构和算法】寻找数组的中心下标
其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 前缀和的解题模板 2.1.1 最长递增子序列长度 2.1.2 寻找数组中第 k 大的元素 2.1.3 最长公共子序列…...
多粒度在研究中的应用
FontDiffuser: One-Shot Font Generation via Denoising Diffusion with Multi-Scale Content Aggregation and Style Contrastive Learning 存在的问题 现有的字体生成方法虽然取得了令人满意的性能,但在处理复杂字和风格变化较大的字符(尤其是中文字符)时&#x…...
Docker命令---查看容器日志
介绍 使用docker命令查看容器输出的日志 示例 docker logs 容器ID...
Spring Boot 基于Redisson实现注解式分布式锁
依赖版本 JDK 17 Spring Boot 3.2.0 Redisson 3.25.0 源码地址:Gitee 导入依赖 <properties><redisson.version>3.25.0</redisson.version> </properties><dependencies><dependency><groupId>org.projectlombok</…...
Javascript 正则表达式零宽断言
在介绍正则表达式零宽断言这个概念之前,先看一下以下这道有关 javascript 正则表达式的题目: 登录注册流程是前端最常见的业务流程之一,注册流程少不了密码强弱度校验,请实现对密码的校验,要求满足: 包含大…...
Chocolatey
Chocolatey Software | PHP (Hypertext Preprocessor) 8.3.1 msi安装包https://github.com/chocolatey/choco/releases/download/2.2.2/chocolatey-2.2.2.0.msi 设置/安装 巧克力味Chocolatey CLI (choco)设置/安装 要求 受支持的 Windows 版本Windows …...
雍禾植发成毛发行业标杆!雍禾医疗获“年度医疗大健康消费企业”
近期,以“新视野 新链接”为主题的2023 EDGE AWARDS全球创新评选榜单正式发布。该评选由钛媒体发起,聚焦大健康产业,由权威行业专家、王牌分析师、专业投资机构、用户代表共同评审,兼顾综合专业性、影响力、创新性三大维度评选而出…...
Linux内核--进程管理(十二)共享内存和信号量
目录 一、引言 二、基础知识 三、统一封装的接口 ------>3.1、kern_ipc_perm 四、共享内存的创建和映射 ------>4.1、创建共享内存 ------>4.2、共享内存的映射 五、信号量的创建和使用 ------>5.1、信号量的创建 ------>5.2、信号量的初始化 ------…...
java 构造方法
构造方法 1、什么是构造方法,有什么用? 构造方法是一个比较特殊的方法,通过构造方法可以完成对象的创建,以及实例变量的初始化。 换句话说:构造方法是用来创建对象,并且同时给对象的属性赋值。 注意&#x…...
CISSP 第2章: 人员安全和风险管理概念
第二章 人员安全和风险管理概念 2.1 促进人员安全策略 构建工作描述方面的重要因素包括: 职责分离: 把关键的、重要的和敏感工作任务分配给若干不同的管理员或高级执行者,防止共谋 工作职责:最小特权原则 岗位轮换:提供知识冗余,减少伪造、数据更改、偷…...
前端八股文(CSS篇)一
目录 1.px和em的区别 2.介绍下BFC及其应用 3.介绍下粘性布局(sticky) 4.清除浮动的方法 5.如何用css或js实现多行文本溢出省略效果,考虑兼容 6.如何触发重排和重绘? 7.重绘与重排的区别? 8.说说两种盒模型以及区…...
wordpress资源模板/百度信息
u3d消消乐移植Laya心得总结 试玩地址 因为原版用了U3D的大量的携程做UI和特效效果 所以需要攻克的问题是 ts实现u3d携程,并在真机通过代码测试 //以上的代码的意思是等待 0.5秒后初始化完成 我的项目编译时webpack编译出来的bundle.js 还要在前面加上 promise…...
网站top排行榜/网页推广怎么做的
基本配置: Configuration public class RestConfig {Beanpublic RestClient getClient() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {// 如果有多个从节点可以持续在内部new多个HttpHost,参数1是ip,参数2是HTTP端口…...
怎么做网站开发/常州网络推广seo
通过使用数据库服务器端的sqlnet.ora文件可以实现禁止指定IP主机访问数据库的功能,这对于提升数据库的安全性有很大的帮助,与此同时,这个技术为我们管理和约束数据库访问控制提供了有效的手段。下面是实现这个目的的具体步骤仅供参考…...
云南旅游网站建设公司/搜狗收录查询
window对象常见事件 调整窗口大小 window.onresize window.onresize为调整窗口大小触发事件,通俗来讲就是当调整浏览器可视区的大小的时候触发onresize事件。 使用方法如下 <body><script>window.addEventListener(resize, function () {console.lo…...
怎么做建设网站首页/html家乡网站设计
征途手机版主推国战系统,其中国家刺探是什么呢?国战相关的问题有哪些呢?今天当乐网小编给大家带来相关内容的解答:Q:《征途》共有几个国家?A:10个国家,分别是吴、赵、越、楚、燕、唐…...
外贸营销网站建设方案/seo快速排名多少钱
不论是典型的注册开发商,还是运营商管理的CP/SP,都可以通过开发商互联网或者运营商互联网使用另外的两个在线工具:ClassID生成器和测试签名生成器。 通过ClassID生成器可以为应用生成一个全球唯一的ClassID,在线工具的主要功能部分…...