前端面试---Vue部分考点梳理

一. Vue的使用

1. Vue的基本使用

  1. 指令 插值
  • 插值 表达式

  • 指令 动态属性

  • v-html 会有XSS风险 会覆盖子组件

  1. computed 和 watch
  • computed 有缓存 data不变则不会重新计算
  • watch 如何深度监听
  • watch 监听引用类型时 拿不到oldVal
  1. v-for
  • v-for 和 v-if 不能同时使用
  • :key的值尽量不要使用index或者random
  1. 事件
  • 事件修饰符 在这里插入图片描述
  • 按键修饰符 在这里插入图片描述
  • 事件被绑定到了哪里:事件会挂载到当前绑定的元素上

2. Vue组件的使用

  1. props

父组件向子组件传递数据

  1. $emit

子组件触发父组件的事件并且传递参数

  1. 组件间的通讯 - 自定义事件

在绑定自定义事件中 第二个参数 是一个方法名称 在beforeDsstoy函数中 需要将方法及时销毁 否则会造成内存泄露

  1. 组件的生命周期
  • 挂载阶段 beforCreate created beforMount mounted
  • 更新阶段 beforUpdate updated
  • 销毁阶段 beforDestroy destroyed

3. Vue的高级特性

  1. 自定义v-model

颜色选择器

  1. $nextTick

Vue 是异步渲染
data 改变之后 DOM不会立刻渲染
$nextTick 会在DOM渲染之后触发 以获取最新DOM节点
在这里插入图片描述

  1. slot(插槽)

粗暴的理解成 父组件想要向子组件中插入写东西

  1. 基本使用
  2. 作用域插槽
  3. 具名插槽
  1. 动态、异步组件

动态组件:

  • :is=“component-name”用法

异步组件:

  • import()函数
  • 按需要加载 异步加载大组件
  1. keep-alive

缓存组件
频繁切换但不需要渲染 (tab选项卡)
Vue常见性能优化之一

  1. mixin

多个组件有相同的逻辑 抽离出来
mixin中可能遇到的问题

  • 变量来源不明确 不利于阅读
  • 多mixin可能会曹成命名冲突
  • mixin组件可能会出现多对多的关系 复杂度较高

4. Vuex的使用

  • state的数据结构设计
  • getters
  • action
  • mutation
  • 用于Vue组件
  • dispatch
  • commit
  • mapState
  • mapGetters
  • mapActions
  • mapMutations

5. Vue-router

  1. 路由模式
  • hash
  • H5 history
    在这里插入图片描述
  1. 路由配置
  • 动态路由
  • 懒加载

二. Vue的原理(大厂必考)

1. 组件化 和 MVVM

  1. 数据驱动试图
  • 传统组件 只是静态渲染 更新还要依赖于操作DOM
  • 数据驱动试图 - Vue MVVM
  • 数据驱动试图 - React setState
  1. MVVM

这里是引用

2. 响应式 原理(重点)

  1. 组件data的数据一旦变化 立刻触发视图的更新
  2. 实现数据驱动试图的第一步
  3. 核心:API-Object.defineProperty

缺点:

  • 深度监听 需要递归到底 一次性计算量大
  • 无法监听新增属性和删除属性(Vue.set Vue.delete)
  • 无法原生监听数组 需要特殊处理

Vue3.0启用proxy 实现响应式 的缺点:

  • proxy的兼容性不好 且无法polyfill

3. vdom和diff

  1. vdon是实现Vue和React的重要基石
  2. diff算法是vdom中最核心 最关键的部分

4. 模板编译

5. 渲染过程

6. 前端路由

三. Vue经典面试题

1. v-show 和 v-if 的区别

v-show:通过css样式来控制 就是两个或多个元素中 让其显示的就直接显示 如果让其隐藏的就为其添加display:none
v-if:通过Vue本身的机制控制 就是两个或多个元素中 让其显示的就显示 其他的就不会被加载到浏览器中
以上两者的使用场景:判断是否为频繁切换 元素的显示 如果需要频繁的切换建议使用v-show 如果是一次性的建议使用v-if

2. 为何 v-for 中要用 key

v-for中必须要有key 并且他不能使用index要取和业务相关的值

3. 描述 Vue 中的生命周期(有父子组件的情况)

单组件的生命周期

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

有父子组件的情况
初始化Vue实例是从外到内 渲染是从内到外的:父组件初始化(created)---- 子组件初始化(created)---- 子组件渲染(mounted)----父组件渲染(mounted)
更新数据逻辑同上

4. Vue 组件如何通讯

父子通讯 :props和$emit
无关系组件之间通讯:自定义事件
Vuex通讯

5. 描述组件渲染和更新的过程

6. 双向数据绑定 v-model 的实现原理

7. created 和 mounted 的区别

created:把Vue的实例进行初始化 并没有开始渲染
mounted:是组件真正的网页绘制完成了(ajax获取信息 绑定事件等操作需要在这里完成)

8. 在 beforDestroy 中需要做什么?

解除绑定
销毁子组件 以及事件监听器
解除自定义事件的绑定

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

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

相关文章

.net core实现跨域

什么是跨域在前面已经讲解过了,这里便不再讲解,直接上代码。 一、后台API接口 用.net core创建一个Web API项目负责给前端界面提供数据。 二、前端界面 建立两个MVC项目,模拟不同的ip,在view里面添加按钮调用WEB API提供的接口进行…

TCP/IP简介

TCP/IP简介 OSI的“实现”:TCP/IP参考模型 并不完全符合OSI的七层参考模型,但我们可以理解为OSI的一种实现 TCP/IP协议简述 在很多情况下,它只是利用IP协议进行通信时,所必须用到的协议群的统称,具体来说,I…

Spring-Cloud 学习笔记-(4)负载均衡器Ribbon

目录 Spring-Cloud 学习笔记-(4)负载均衡器Ribbon1、前言2、什么是负载均衡2.1、问题分析2.2、什么是Ribbon3、快速入门3.1、实现方式一3.1.1、修改代码3.2、实现方式二3.2.1、启动类3.2.2、调用代码3.2.3、测试3.2.4、实现原理3.2.5、断点调式3.3、修改…

‘仿微信发表朋友圈’项目中登录功能的业务逻辑

登录功能 手机号验证码都通过后端验证后 返回用户数据 登陆成功 成功后 调用store中的setUser方法 store中的setUser方法 将后端返回的用户信息存储到localStorage中 同时登录成功后服务器会将token自动存入我们的cookie中 有过期时间 在我们请求需要登录的接口时将cookie中的…

kubernetes--配置文件

转载于:https://www.cnblogs.com/caiciadeliliang/p/10993388.html

微信动态中的背景图更换

初衷: 图一中的红框中的部分,作为用户自定义的背景图,如果用户没有上传也会为其自动设置一张背景图,当用户点击时则会出现图二中的选项 ,点击取消则选项消失,点击从相册选择则会跳转本机的相册&#xff0c…

大数据学习——akka自定义RPC

实现 package cn.itcast.akkaimport akka.actor.{Actor, ActorSystem, Props} import akka.actor.Actor.Receive import com.typesafe.config.ConfigFactoryimport scala.collection.mutableimport scala.concurrent.duration._class Master(val host: String, val port: Int) …

从Client应用场景介绍IdentityServer4(一)

从Client应用场景介绍IdentityServer4(一) 原文:从Client应用场景介绍IdentityServer4(一)一、背景 IdentityServer4的介绍将不再叙述,百度下可以找到,且官网的快速入门例子也有翻译的版本。这里主要从Clie…

开发常用代码笔记

Vue 使用moment插件对时间进行格式化(全局设置) 下载插件 npm install moment --save 在main.js中引入插件 import moment from ‘moment’ 在main.js中定义全局过滤器 Vue.filter(dataFilter,function (dataStr,patten YYYY-MM-DD HH:mm:ss) {retur…

微信小程序——账号及开发工具

1. 注册微信小程序账号 点击我进入微信公众平台 进入后点击立即注册 注册成功且登录后进入小程序管理后台 2. 安装开发者工具 点击进入开发文档 进入安装开发工具(稳定版本) 一路默认下一步进行安装 3. 开发者工具的使用 使用注册微信小程序的微信号…

CSS注意的地方

content-box和border-box的区别 2018年02月27日 22:20:16 sulingliang 阅读数:8011盒子模型 盒子宽度:paddingbordercontent-width 盒子高度:paddingbordercontent-height 如图所示 盒子模型content-box 说明:在内容宽度和高度之…

机器学习笔记(6) 线性回归

先从最简单的例子开始,假设我们有一组样本(如下图的一个个黑色的圆点),只有一个特征,如下图,横轴是特征值,纵轴是label。比如横轴是房屋面积,纵轴是房屋价格. 现在我们要做什么呢?我们试图找到一条直线yaxb,可以尽量好的拟合这些点. 你可能要问了,为啥是直线,不是曲…

仿微信朋友圈项目梳理

项目功能简介: 用户通过手机号验证码进行登录和注册 可以浏览动态列表中的所有动态 登录成功后用户可以发表自己的动态 也可以对自己认可欣赏的动态进行点赞和评论 也可以通过动态结识志同道合的朋友 进行聊天和探讨 前端:采用Vue框架搭建 weui进行页面…

echarts鼠标事件以及自定义数据获取

事件添加方法: 对应官网位置:https://www.echartsjs.com/api.html#events 鼠标事件包括 click、dblclick、mousedown、mousemove、mouseup、mouseover、mouseout、globalout、contextmenu。 myChart.on(click, function (params) {console.log(params); …

[数学]点、线、面分割问题

平面分割问题 p条直线相交于一点时,分割的图形有 2*(n-1) 个,此时再加一条直线,在 2*(n-1) 的基础上再加 n条,此时为2*n n条曲线,其中有m条相交于一点,每两个曲线都交于两点 平面上有n条直线,且…

移动开发

1.移动端基础 1.1 浏览器现状 PC端浏览器 360浏览器、谷歌浏览器、火狐浏览器、QQ浏览器、百度浏览器(停止服务)、搜狗浏览器、IE浏览器 移动端浏览器 UC、QQ浏览器、欧朋浏览器、百度手机浏览器、360、搜狗、猎豹、谷歌等其他手机自带的浏览器 国…

Django之路由系统

Django的路由系统 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表。 你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。 URLconf配置…

微信小程序——操作数据库

案例一:统计用户的访问次数 业务需求: 统计每个用户对程序的访问次数将访问次数存储到数据库中访问次数应该与用户进行关联 业务逻辑: 如果用户是第一次访问此程序,向数据库添加一条记录:{openid:45454…

shop--12.阿里云部署以及域名绑定

一、申请阿里云服务器(1)PC访问阿里云https://www.aliyun.com/,申请阿里云帐号(可以用您的支付宝帐号登录,因为支付宝帐号已经进行了实名认证,使用起来更方便)并登录(2)找…

微信小程序——获取用户的运动步数

程序获取用户信息步骤 点击参考微信文档中的授权首先程序先向用户申请访问哪些权限用户做出选择后返回给程序程序携带权限访问服务器如果用户允许则返回信息如果用户为允许则不返回 自定义函数getUserRun 为获取用户的微信运动数据 页面加载调用此函数函数中执行下面操作 1…