Vue面试题

1、Vue的生命周期?

beforeCreate 、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy、destroyed(创建、挂载、更新、卸载)

挂载中可以操作DOM,创建中不能操作DOM;常用挂载或者创建生命周期就行了

2、methods和computed的区别?

都是存放方法的地方;

methods里面存放的方法每次调用都会重新计算(不会缓存)

computed里面的方法调用计算后,当其参数不发生改变时再次调用,直接返回上次计算的结果,不重新计算(会响应数据缓存)

watch主要用来解决 beforeUpdate, updated两个钩子里修改状态导致死循环的问题,采用watch以及 监测可能异步改变值得时候

3、Vue的传参方法?

属性传值、$refs、$parent、通知传值(广播传值)、本地传值、路由传值

父向子传值:v-bind属性绑定(props)

子向父传值:v-on 事件绑定

兄弟组件之间共享数据:EventBus($on数据接收方,$emit发送数据的内个组件)

Vue六种传值方式 - 简书

4、vue-router路由守卫?

全局守卫、路由独享守卫、组件内守卫

Vue 路由 导航守卫(全局守卫、路由独享守卫、组件内守卫) - 简书

5、vuex的核心以及使用?

State、Mutation、Action、Getter

vuex及其五大核心功能运用解析 - 活在当下zql - 博客园

6、vue组件封装?

首先,使用Vue.extend()创建一个组件

然后,使用Vue.component()方法注册组件

接着,如果子组件需要数据,可以在props中接受定义

最后,子组件修改好数据之后,想把数据传递给父组件,可以使用emit()方法

Vue封装组件的过程_感恩、奋进、自信-CSDN博客_vue封装组件

7、虚拟DOM和DIFF算法?

将DOM抽象为虚拟DOM, 然后通过新旧虚拟DOM 这两个对象的差异(Diff算法),最终只把变化的部分重新渲染,提高渲染效率的过程;

diff 是通过JS层面的计算,返回一个patch对象,即补丁对象,在通过特定的操作解析patch对象,完成页面的重新渲染

虚拟DOM和diff算法 - simple小前端 - 博客园

8、vue2和vue3原理?

1. vue2和vue3双向数据绑定原理发生了改变

vue2 的双向数据绑定是利用ES5 的一个 API Object.definePropert()对数据进行劫持 结合 发布订阅模式的方式来实现的。

vue3 中使用了 es6 的 ProxyAPI 对数据代理。

相比于vue2.x,使用proxy的优势如下

defineProperty只能监听某个属性,不能对全对象监听

可以省去for in、闭包等内容来提升效率(直接绑定整个对象即可)

可以监听数组,不用再去单独的对数组做特异性操作 vue3.x可以检测到数组内部数据的变化

2、默认进行懒观察(lazy observation)

在 2.x 版本里,不管数据多大,都会在一开始就为其创建观察者。当数据很大时,这可能会在页面载入时造成明显的性能压力。3.x 版本,只会对「被用于渲染初始可见部分的数据」创建观察者,而且 3.x 的观察者更高效。

3、更精准的变更通知

比例来说:2.x 版本中,使用 Vue.set 来给对象新增一个属性时,这个对象的所有 watcher 都会重新运行;3.x 版本中,只有依赖那个属性的 watcher 才会重新运行。

4、vue3新加入了TypeScript以及PWA的支持

5、vue2和vue3组件发送改变

vue2与vue3的区别_田兴的博客-CSDN博客_vue2和vue3区别

本文转自 https://www.jianshu.com/p/9489fdf7c145,如有侵权,请联系删除。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

vue-生命周期

vue生命周期即为一个组件从出生到死亡的一个完整周期,主要包括以下4个阶段:创建,挂载,更新,销毁创建前:beforeCreate,创建后:created挂载前:beforeMount,挂载后:mounted更新前:beforeUpdate,更新后:updated销毁前:beforeDestroy,销毁后:destroye