vue常见面试题及答案2021(2021年vue面试题)

今天给各位分享vue常见面试题及答案2021的知识,其中也会对2021年vue面试题进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

vue面试题大全

1. vue生命周期都有哪些?

2. 进入页面会执行哪些生命周期函数

beforeCreate、created、beforeMounted、mounted

3. 在哪里可以访问 data

beforeCreate中不可以访问

created中有 el

beforeMounte中有 el

mouted中都有,包括之后的生命周期钩子函数都有

4、 如果加入了keep-alive会增加两个生命周期函数

activated和deactivated

进入页面的时候触发activated,离开页面触发 deactivated

5. 如果加入keep-alive组件,第一次进入页面会触发哪些生命周期

beforeCreate、created、beforeMounted、mounted、activated

6、 如果加入了keep-alive组件后,第二次或第n次进入页面会触发哪些生命周期?

只触发一个生命周期:activated(因为该页面已经被缓存起来了)

1.是什么

vue自带的一个组件,用来缓存组件,提升性能,keep-alive可以在组件切换时,保存其包裹组件的状态,使其不被销毁。

2、参数

include:表示只有匹配的组件才会被缓存;

exclude:表示匹配到的组件不会被缓存;

3、生命周期

有两个生命周期函数,同上

4.使用场景

-列表页面跳转详情页的时候,用户通过点击跳转,那么详情页每次都要去请求数据,如果用户每次点击的都是同一个,那么详情页就没必要去重新请求,直接缓存起来就行了,如果点击的不是同一个再重新发起请求;

-在router-view上使用可以缓存路由组件;

1.相同点

都可以控制元素的显示隐藏

2.区别

v-if通过创建/销毁dom元素来控制元素的显示隐藏,v-show通过css属性的display:none来控制元素的显示隐藏

3.场景

频繁切换使用v-show,会节省性能,反之使用v-if

1、当项目使用keep-alive时,可搭配组件name进行缓存过滤

当我们使用keep-alive缓存组件时,被缓存组件中的mounted函数只会执行一次,第二次进入页面不会重新触发,有两种解决方法,一种是使用activated(),在里面进行mounted中的操作;另一种就是在keep-alive中增加一个过滤,如下所示:

exclude属性就是要忽略匹配到的组件。

2、DOM做递归组件时;

当组件需要自己调用自己的时候

3、使用vue-tools时;

vue-devtools调试工具里显示的组件名称是由vue中组件name决定的

v-for的优先级比v-if的优先级高,这是在源码中规定好的,并且v-for和v-if不可以同时使用,同时使用会很浪费性能,比如明知判断条件是false的情况下,还需要去遍历一下数据,所以通常我们会把v-if放在v-for的外面。

是用来获取更新后的dom内容,并且该方法是异步的

作用是将回调函数延迟到下次dom更新循环之后执行因为vue更新数据是异步的,修改data中的数据,视图不会立刻更新,vue会将你对data的修改放到一个watch队列中,当同一事件循环中的所有数据更新完以后,再进行试图更新,所以会产生延迟。

最常见的使用场景就是,在created中获取dom元素的时候需要使用$nextTick获取

组件中的 data 写成一个函数,数据以函数返回值形式定义,这样每复用一次组件,就会返回一份新的 data ,相当于给每个组件实例创建一个私有的数据空间,让各个组件实例维护各自的数据。而单纯的写成对象形式,就使得所有组件实例共用了一份 data ,就会造成一个变了全都会变的结果。

当父组件给子组件传递数据的时候,子组件只允许对数据进行读取,不允许修改数据,因为当子组件修改了父组件传过来的数据时,其他引用父组件数据的组件也会被修改,从而导致报错,然而也不知道是当前组件报错还是父组件报错还是修改父组件信息的子组件的错误;

如果要修改可以通过this.$emit方法派发自定义事件,在父组件中修改;

hash模式和history模式,默认是hash模式

区别如下:

1、表现形式不同,hash使用#表示,history用/表示;

2、hash值不会发送到服务端,history会发送到服务端 ,如果没有匹配到对应的路由,需要配置对应的页面;

3、获取方式不同,hash值可以通过location.path获取,history通过location.pathname获取;

4、hash可以通过window.onhashchange监听hash值的改变 ,history

可以通过onpopstate监听变化;

组建中的template标签会编译为render函数,通过render函数创建出dom元素,然后转化为虚拟dom最终转化为真实dom

1、虚拟dom是一个js对象,用对象属性来描述节点,是一层对真实dom的抽象

2、因为dom的执行速度远不如js执行速度快,因此将真实的dom抽象成js对象,然后通过算法计算出真正需要更新的节点,从而减少了大量的dom操作。

3、将直接操作dom转换成了两个js对象中去比较,找出差异项,做局部更新,提高了执行效率。

未完待续...

vue常见面试题及答案2021(2021年vue面试题),vue常见面试题及答案2021,信息,源码,模板,第1张

47道基础的VueJS面试题(附答案)

1、什么是MVVM框架?它适用于哪些场景?

MVVM框架是一个 Model-View-View Model框架,其中 ViewModel连接模型Model)和视图(View)。

在数据操作比较多的场景中,MVVM框架更合适,有助于通过操作数据渲染页面。

2、active- class是哪个组件的属性?

它是 vue-router模块的 router-link组件的属性。

3、如何定义Vue- router的动态路由?

在静态路由名称前面添加冒号,例如,设置id动态路由参数,为路由对象的path属性设置/:id。

4、如何获取传过来的动态参数?

在组件中,使用$router对象的 params.id,即 $route.params.id 。

5、vue- router有哪几种导航钩子?

有3种。

第一种是全局导航钩子:router.beforeEach(to,from,next)。作用是跳转前进行判断拦截。

第二种是组件内的钩子。

第三种是单独路由独享组件。

6、mint-ui是什么?如何使用?

它是基于 Vue.js的前端组件库。用npm安装,然后通过 import导入样式和JavaScript代码。vue.use(mintUi)用于实现全局引入, import {Toast} from ' mint-ui'用于在单个组件局部引入。

7、V-model是什么?有什么作用?

v- model是 Vue. js中的一条指令,可以实现数据的双向绑定。

8、Vue.js中标签如何绑定事件?

绑定事件有两种方式。

第一种,通过v-on指令, 。

第二种,通过@语法糖, input@ click= doLog()/。

9、vuex是什么?如何使用?在哪种功能场景中使用它?

vuex是针对 Vue. js框架实现的状态管理系统。

为了使用vuex,要引入 store,并注入Vue.js组件中,在组件内部即可通过$ ostore访问 store对象。

使用场景包括:在单页应用中,用于组件之间的通信,例如音乐播放、登录状态管理、加入购物车等。

10、如何实现自定义指令?它有哪些钩子函数?还有哪些钩子函数参数?

自定义指令包括以下两种。

它有如下钩子函数。

钩子函数的参数如下。

11、至少说出vue.js中的4种指令和它们的用法。

相关指令及其用法如下。

12、Vue-router是什么?它有哪些组件?

它是 Vue. js的路由插件。组件包括 router-link和 router-vIew。

13、导航钩子有哪些?它们有哪些参数?

导航钩子又称导航守卫,又分为全局钩子、单个路由独享钧子和组件级钧子。

全局钩子有 beforeEach、beforeResolve(Vue2.5.0新增的)、 afterEach。

单个路由独享钩子有 beforeEnter。

组件级钩子有 beforeRouteEnter、 beforeRouteUpdate(Vue2.2新增的) beforeRouteLeave。

它们有以下参数。

14、Vue.js的双向数据绑定原理是什么?

具体步骤如下。

(1)对需要观察的数据对象进行递归遍历,包括子属性对象的属性,设置set和get特性方法。当给这个对象的某个值赋值时,会触发绑定的set特性方法,于是就能监听到数据变化。

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

15、请详细说明你对Vue.js生命周期的理解。

总共分为8个阶段,分别为 beforeCreate、created、beforeMount、 mounted、beforeUpdate、 updated、 beforeDestroyed、 destroyed。

当使用组件的kep- alive功能时,增加以下两个周期。

Vue2.5.0版本新增了一个周期钩子:ErrorCaptured,当捕获一个来自子孙组件的错误时调用。

16、请描述封装Vue组件的作用过程。

组件可以提升整个项目的开发效率,能够把页面抽象成多个相对独立的模块,解决了传统项目开发中效率低、难维护、复用性等问题。

使用Vue.extend方法创建一个组件,使用Vue.component方法注册组件。子组件需要数据,可以在 props中接收数据。而子组件修改妤数据后,若想把数据传递给父组件,可以采用emit方法。

17、你是怎样认识vuex的?

vuex可以理解为一种开发模式或框架。它是对 Vue. js框架数据层面的扩展。通过状态(数据源)集中管理驱动组件的变化。应用的状态集中放在 store中。改变状态的方式是提交 mutations,这是个同步的事务。异步逻辑应该封装在 action中。

18、Vue- loader是什么?它的用途有哪些?

它是解析.vue文件的一个加载器,可以将 template/js/style转换成 JavaScript模块。

用途是通过 vue-loader, JavaScript可以写 EMAScript 6语法, style样式可以应用scss或less, template可以添加jade语法等。

19、请说出vue.cli项目的src目录中每个文件夹和文件的用法。

assets文件夹存放静态资源;components存放组件;router定义路由相关的配置;view是视图;app. vue是一个应用主组件;main.js是入口文件。

20、在Vue.cli中怎样使用自定义组件?在使用过程中你遇到过哪些问题?

具体步骤如下。

(1)在 components目录中新建组件文件,脚本一定要导出暴露的接口。

(2)导入需要用到的页面(组件)。

(3)将导入的组件注入uejs的子组件的 components属性中。

(4)在 template的视图中使用自定义组件。

21、谈谈你对vue.js的 template编译的理解。

简而言之,就是首先转化成AST( Abstract Syntax Tree,抽象语法树),即将源代码语法结构抽象成树状表现形式,然后通过 render函数进行渲染,并返回VNode( Vue. js的虚拟DOM节点)。

详细步骤如下。

(1)通过 compile编译器把 template编译成AST, compile是 create Compiler的返回值, createCompiler用来创建编译器。另外, compile还负责合并 option。

(2)AST会经过 generate(将AST转化成 render funtion字符串的过程)得到 render函数, render的返回值是 VNode, VNode是 Vue.Js的虚拟DOM节点,里面有标签名子节点、文本等。

22、说一下Vue.js中的MVVM模式。

MVVM模式即 Model- View- ViewModel模式。

Vue.js是通过数据驱动的, Vue. js实例化对象将DOM和数据进行绑定,一旦绑定,和数据将保持同步,每当数据发生变化,DOM也会随着变化。

ViewModel是Vue.js的核心,它是 Vue.js的一个实例。Vue.js会针对某个HTML元素进行实例化,这个HTML元素可以是body,也可以是某个CSS选择器所指代的元素。

DOM Listeners和 Data Bindings是实现双向绑定的关键。DOM Listeners监听页面所有View层中的DOM元素,当发生变化时,Model层的数据随之变化。Data Bindings会监听 Model层的数据,当数据发生变化时,View层的DOM元素也随之变化。

23、v-show指令和v-if指令的区别是什么?

v-show与v-if都是条件渲染指令。不同的是,无论v-show的值为true或 false,元素都会存在于HTML页面中;而只有当v-if的值为true时,元素才会存在于HTML页面中。v-show指令是通过修改元素的 style属性值实现的。

24、如何让CSS只在当前组件中起作用?

在每一个Vue.js组件中都可以定义各自的CSS、 JavaScript代码。如果希望组件内写的CSS只对当前组件起作用,只需要在Style标签添加Scoped属性,即 。

25、如何创建vue.js组件?

在vue.js中,组件要先注册,然后才能使用。具体代码如下

26、如何实现路由嵌套?如何进行页面跳转?

路由嵌套会将其他组件渲染到该组件内,而不是使整个页面跳转到 router-view定义组件渲染的位置。要进行页面跳转,就要将页面渲染到根组件内,可做如下配置。

首先,实例化根组件,在根组件中定义组件渲染容器。然后,挂载路由,当切换路由时,将会切换整个页面。

27、ref属性有什么作用?

有时候,为了在组件内部可以直接访问组件内部的一些元素,可以定义该属性此时可以在组件内部通过this. $refs属性,更快捷地访问设置ref属性的元素。这是一个原生的DOM元素,要使用原生 DOM API操作它们,例如以下代码。

注意:在Ve2.0中,ref属性替代了1.0版本中v-el指令的功能。

28、Vue. js是什么?

Vue. js的目标是通过尽可能简单的API实现响应式的数据绑定的组件开发。

29、描述vue.js的一些特性。

Vue.js有以下持性。

(1)MVVM模式。

数据模型( Model)发生改变,视图(View)监听到变化,也同步改变;视图(View)发生改变,数据模型( Model)监听到改变,也同步改变。

使用MVVM模式有几大好处。

(2)组件化开发

(3)指令系统

(4)Vue2.0开始支持虚拟DOM。

但在Vue1.0中,操作的是真实DOM元素而不是虚拟DOM,虚拟DOM可以提升页面的渲染性能。

30、描述vue.js的特点。

Vue. js有以下特点。

31、在vue.js中如何绑定事件?

通过在v-on后跟事件名称=“事件回调函数( )”的语法绑定事件。事件回调函数的参数集合( )可有可无。如果存在参数集合( ),事件回调函数的参数需要主动传递,使用事件对象要传递 $event。当然,此时也可以传递一些其他自定义数据。如果没有参数集合,此时事件回调函数有一个默认参数,就是事件对象。事件回调函数要定义在组件的 methods属性中,作用域是 Vue. js实例化对象,因此在方法中,可以通过this使用 Vue. js中的数据以及方法,也可以通过@语法糖快速绑定事件,如@事件名称=“事件回调函数( )”。

32、请说明 组件的作用。

当 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。

keep-alive是一个抽象组件,它自身不会渲染一个DOM元素,也不会出现在父组件链中。

当在 内切换组件时,它的 activated和 deactivated这两个生命周期钧子函数将会执行。

33、axios是什么?如何使用它?

axios是在vue2.0中用来替换 vue-resource.js插件的一个模块,是一个请求后台的模。

用 npm install axios安装 axios。基于 EMAScript 6 的 EMAScript Module规范,通过 import关键字将 axios导入,并添加到 Vue. js类的原型中。这样每个组件(包括vue.js实例化对象)都将继承该方法对象。它定义了get、post等方法,可以发送get或者post请求。在then方法中注册成功后的回调函数,通过箭头函数的作用域特征,可以直接访问组件实例化对象,存储返回的数据。

34、在 axios中,当调用 axios.post('api/user')时进行的是什么操作?

当调用post方法表示在发送post异步请求。

35、sass是什么?如何在ue中安装和使用?

sass是一种CSS预编译语言安装和使用步骤如下。

(1)用npm安装加载程序( sass-loader、 css-loader等加载程序)。

(2)在 webpack. config. js中配置sass加载程序。

(3)在组件的 style标签中加上lang属性,例如lang="scss"。

36、如何在 Vue. js中循环插入图片?

对“src”属性插值将导致404请求错误。应使用 v-bind:src格式代替。

代码如下:

三十七个常见Vue面试题

映射关系简化,隐藏controller MVVM在MVC的基础上,把控制层隐藏掉了。

Vue不是一个MVVM框架,它是一个视图层框架。

ViewModal是一个桥梁,将数据和视图进行关联。

数组和对象类型的值变化的时候,通过defineReactive方法,借助了defineProperty,将所有的属性添加了getter和setter。用户在取值和设置的时候,可以进行一些操作。

缺陷:只能监控最外层的属性,如果是多层的,就要进行全量递归。

get里面会做依赖搜集(dep[watcher, watcher]) set里面会做数据更新(notify,通知watcher更新)

vue中对数组没有进行defineProperty,而是重写了数组的7个方法。 分别是:

因为这些方法都会改变数组本身。

数组里的索引和长度是无法被监控的。

Vue初始化的时候,挂载之后会进行编译。生成renderFunction。

当取值的时候,就会搜集watcher,放到dep里面。

当用户更改值的时候,就会通知watcher,去更新视图。

这个问题的核心是如何将template转换成render函数。

Vue的生命周期钩子是回调函数,当创建组件实例的过程中会调用相应的钩子方法。 内部会对钩子进行处理,将钩子函数维护成数组的形式。

Vue的mixin的作用就是抽离公共的业务逻辑,原理类似对象的继承,当组件初始化的时候,会调用mergeOptions方法进行合并,采用策略模式针对不同的属性进行合并。 如果混入的数据和本身组件的数据有冲突,采用本身的数据为准。

缺点:命名冲突、数据来源不清晰

new Vue是一个单例模式,不会有任何的合并操作,所以根实例不必校验data一定是一个函数。 组件的data必须是一个函数,是为了防止两个组件的数据产生污染。 如果都是对象的话,会在合并的时候,指向同一个地址。 而如果是函数的时候,合并的时候调用,会产生两个空间。

nextTick是一个微任务。

Vue的diff算法是平级比较,不考虑跨级比较的情况。内部采用深度递归的方式+双指针方式比较

所以采用watcher + Diff算法来检测差异。

产生组件虚拟节点 - 创建组件的真实节点 - 插入到页面

属性更新会触发patchVnode方法,组件的虚拟节点会调用prepatch钩子,然后更新属性,更新组件。

先渲染异步占位符节点 - 组件加载完毕后调用forceUpdate强制更新。

正常的一个组件是一个类继承了Vue。

函数式组件,就是一个普通的函数。

主要作用是为了实现批量传递数据。

provide/inject更适合应用在插件中,主要实现跨级数据传递。

首先,v-for和v-if 不能在同一个标签中使用。

先处理v-for,再处理v-if。

如果同时遇到的时候,应该考虑先用计算属性处理数据,在进行v-for,可以减少循环次数。

在组件上用的v-model,是model和callback

在普通元素上用v-model,会生成指令,还可能因为不同的元素:

指令在什么时候会调用?

源码:

普通插槽是渲染后做替换的工作。父组件渲染完毕后,替换子组件的内容。

在模板编译的时候,处理组件中的子节点和slot标签

在创建元素的时候,用_t()方法方法来替换_v()的内容。

作用域插槽可以拿到子组件里面的属性。在子组件中传入属性然后渲染。

作用域插槽的编译结果:

Vue.use是用来使用插件的。我们可以在插件中扩展全局组件、指令、原型方法等。 会调用install方法将Vue的构建函数默认传入,在插件中可以使用vue,无需依赖vue库

使用有两个场景,一个是动态组件,一个是router-view

这里创建了一个白名单和一个黑名单。表明哪些需要需要做缓存,哪些不需要做缓存。以及最大的缓存个数。

缓存的是组件的实例,用key和value对象保存。

加载的时候,监控include和exclude。

如果不需要缓存,直接返回虚拟节点。

如果需要缓存,就用组件的id和标签名,生成一个key,把当前vnode的instance作为value,存成一个对象。这就是缓存列表

如果设置了最大的缓存数,就删除第0个缓存。新增最新的缓存。

并且给组件添加一个keepAlive变量为true,当组件初始化的时候,不再初始化。

钩子函数有三种:

Vuex是专门为vue提供的全局状态管理系统,用于多个组件中的数据共享、数据缓存。

问题:无法持久化。

史上最全前端vue面试题!推荐收藏

1.为什么会形成跨域?

不是一个源的文件操作另一个源的文件就会形成跨域。当请求端的协议、域名、端口号和服务器的协议、域名、端口号有一个不一致就会发生跨域。

解决方法:安装插件

Pip install django-cors-headers

2.vuex的工作流程?

① 在vue组件里面,通过dispatch来出发actions提交修改数据的操作。

② 然后再通过actions的commit来出发mutations来修改数据。

③ mutations接收到commit的请求,就会自动通过Mutate来修改state(数据中心里面的数据状态)里面的数据。

④ 最后由store触发每一个调用它的组件更新。

3.vuex是什么?怎么使用?

vuex是一个专为vue.js应用程序开发的状态管理模式。使用:store,getters,mutations,actions,modules详细使用写法请见:

4.vuex中的数据在页面刷新后数据消失怎么解决?

使用sessionStorage或localStorage存储数据;也可以引入vuex-persist插件

5.在vue中,如何阻止事件冒泡和默认行为?

在绑定事件时,在指令后边加上修饰符.stop来阻止冒泡,.prevent来阻止默认行为

6.深拷贝与浅拷贝?

假设B复制A,修改A的时候,看B是否变化:B变了是浅拷贝(修改堆内存中的同一个值),没变是深拷贝(修改堆内存中不同的值)。浅拷贝只是增加了一个指针指向已存在的内存地址,深拷贝是增加了一个指针并申请了一个新的内存,使这个增加的指针指向这个新的内存。深拷贝和浅拷贝最根本的区别在于是否真正获取一个对象的复制实体,而不是引用。

7.vue的生命周期?

beforeCreate created beforeMount mounted beforeUpdate updated beforeDestroy destroyedactived deactived (keep-alive)组件是否激活调用

8. keep-alive: 组件缓存

router.js中:

meta: {keepAlive:true} // 需要被缓存

钩子执行顺序:created - mounted - actived

include表示需要缓存的页面;exclude表示不需要缓存的页面。如果两个同时设置,exclude优先级更 改,则组件不会被缓存。

应用场景: 用户在某个列表页面选择筛选条件过滤出一份数据列表,由列表页面进入数据详情页面,再返回 该列表页,我们希望列表页可以保留用户的筛选状态。

9.vue传值方式?

props $emit() $on() $parent $children $listener $attr

10. $on 兄弟组件传值

$emit 分发

$on 监听

$off 取消监听

$once 一次性监听一个事件

在js文件中定义一个中央事件总线Bus,并暴露出来

具体的实现方式:

使用Bus的时候在接收Bus的组件的beforeDestroy函数中销毁Bus,否则会一直叠加调用这个方法。

应用场景:“退出登录” - ①点击退出登录;②修改密码后自动退出登录

11.组件跨级传值

$attrs a-b-c

$listeners 监听

12.vue事件修饰符有哪些?

.stop .prevent .self .once .passive .sync

13.箭头函数中的this?

不具有this绑定,但函数体可以使用this,这个this指向的是箭头函数当前所处的词法环境中的this对象。

15.为什么vue组件中data必须是一个函数?

如果不是函数的话,每个组件的data都是内存的同一个地址,一个数据改变了其他也改变了,当他是一个函数时,每个组件实例都有自己的作用域,每个实例相互独立,就不会互相影响。

16.v-if 和 v-show区别?

v-if 是对标签的创建与销毁, v-show 则仅在初始化时加载一次,v-if 开销相对来说比v-show 大;

v-if 是惰性的;v-show 做的仅是简单的css切换。

17.v-text 与 v-html区别?

v-text 用于普通文本,不能解析html;

v-html 反之。

18.v-for key的作用?

使用v-for更新渲染过的数据,它默认用“就地复用”策略。如果数据项的顺序改变,vue将不是移动DOM元素来匹配数据项的改变,而是简单地复用此处每个元素,并确保在特定索引下显示已被渲染过的每个元素。key属性类型只能是string或number。

key的特殊属性主要用在虚拟DOM算法,在新旧node对比时辨识VNods。如不使用key,vue会使用一种最大限度减少动态元素并且尽可能的尝试修复/再利用相同类型元素的算法,它会基于key的变化重新排列元素顺序。

19.Scss是什么?在vue-cli中安装步骤?有哪几大特性?

npm 下载loader (sass-loader,css-loader,node-sass),在webpack中配置extends属性(加.scss拓展) Vscode中可在扩展中下载;

特性:可以用变量,可以用混合器,可以嵌套等。

20.vue获取dom?

ref

21.vue初始化页面闪动问题?

webpack、vue-router

v-cloak css:[v-cloak]:display:none

22.什么是vue-router?

vue router 是官方路由管理器。

主要功能:路由嵌套,模块化 基于组件路由配置,路由参数、查询、通配符,细粒度导航控制,自定义的滚动条行为等。

23.vue路由传参,接收?

传: this.$router.push({path:'', query(params):{}})

接:this.$router.query.xxx

24.防抖和节流?

节流是一定时间内执行一次函数,多用在scroll事件上;

防抖是在一定时间内执行最后一次的函数,多用在input输入操作,表单提交等。

25.如何让scss只在当前组件中起作用?

2021 web面试题常见vue之一 $nextTick 05

!DOCTYPE html

html lang="en"

head

meta charset="UTF-8"

meta http-equiv="X-UA-Compatible" content="IE=edge"

meta name="viewport" content="width=device-width, initial-scale=1.0"

titleDocument/title

script src=""/script

/head

body

div id="app"

h3点击button显示input框后自动聚焦/h3

button @click="show"点击显示/button

input ref="xx" type="text" v-show="flag"

/div

script

var app=new Vue({

el:'#app',

data() {

return {

// 函数返回因为每次都是新作用域,不会造成引用组件时影响一个个新组件

//应该也听过每一个页面都是,router-view下的新组件说法

flag:false

}

},

methods: {

show() {

this.flag=true

// 错误示范

// this. nextTick(()={

// 不知道ref就打印看看

this.$refs.xx.focus()

})

}

},

})

/script

/body

/html

2021-11-10.Vue前端面试题及答案

const vm = new Vue({

...

methods: {

handlerEvent(event) {

console.log(event) // 鼠标点击时,获取到事件对象

}

}

})

1、如果只是事件函数的调用,函数名称后面不要添加括号

好处:函数执行时,第一个形式参数会被系统自动注入

一个事件对象,提供给函数使用

@click="handlerEvent"

2、如果事件函数调用执行时,需要传递参数,函数名称后面

必须添加括号,如果要使用事件对象,就必须手工注入(固定语法)

@click="handlerEvent($event)"

事件冒泡是JS语法中的一种事件触发机制,描述的是目标元素上的事件一旦发生,就会根据DOM节点结构,将事件逐步依次触发到父节点上的一种事件机制

原生JS中通过兼容性语法阻止事件冒泡

event.stopPropagation?event.stopPropagation():event.cancelBubble=true

Vue中对于事件冒泡的处理进行了封装,提供了事件修饰符完成阻止冒泡行为

固定语法:标签对象的事件属性上,添加 @事件对象.stop="处理函数"

.self事件修饰符的作用,就是让事件的触发方式只能由当前标签上发生的事件触发!

.lazy作为表单修饰符,经常用在表单元素上,用于将表单数据的同步机制延迟到表单元素失去焦点时再进行同步,节省资源、提高整体效率!

Vue数据双向绑定的特性,指代的是Vue实例中的数据和网页视图中的数据绑定,实例中数据的更新会直接影响视图的渲染展示,视图中的数据更新会自动同步到实例中的数据,这样的操作机制就是数据双向绑定机制;Vue底层主要是通过Object.defineProperty()数据劫持的操作方式完成的!

数据劫持本质上就是一种变量的高级声明方式,通过数据劫持的语法声明的变量,我们可以针对变量数据的查询、编辑进行监听,随时根据变量的使用情况进行功能的添加,如数据的双向绑定,完成数据的自动同步和自动渲染!

vue常见面试题及答案2021的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于2021年vue面试题、vue常见面试题及答案2021的信息别忘了在本站进行查找喔。

1、本网站名称:源码村资源网
2、本站永久网址:https://www.yuanmacun.com
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
源码村资源网 » vue常见面试题及答案2021(2021年vue面试题)
您需要 登录账户 后才能发表评论

发表评论

欢迎 访客 发表评论