vue面试题面试必问(vue面试必问的问题)

本篇文章给大家谈谈vue面试题面试必问,以及vue面试必问的问题对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

vue常见面试题

1.什么是vue的生命周期?

Vue实例从创建到销毁的过程,就是生命周期。也就是从开始创建、初始化数据、编译模板、挂载DOM-渲染、更新-渲染、卸载等一系列过程,我们称这是Vue的生命周期。

2.vue生命周期的作用是什么?

它的生命周期中有多个事件钩子,让我们在控制整个vue实例的过程时更容易形成好的逻辑。

3.Vue生命周期总共有几个阶段?

它可以总共分为8个阶段:创建前/后,载入前/后,更新前/后,销毁前/销毁后

4.第一次页面加载会触发那几个钩子?

第一次页面加载时会触发beforeCreate,created,beforeMount,mounted

5.DOM渲染在哪个周期中就已经完成?

DOM渲染在mounted中就已经完成了

6.生命周期钩子的一些使用方法:

1.beforecreate:可以在加个loading事件,在加载实例是触发

2.created:初始化完成时的事件写在这里,如在这结束loading事件,异步请求也适宜在这里调用

3.mounted:挂载元素,获取到dom节点

4.updated:如果对数据统一处理,在这里写上相应函数

5.beforeDestroy:可以一个确认停止事件的确认框

6.nextTick:更新数据后立即操作dom

7.v-show与v-if的区别

v-show是css切换,v-if是完整的销毁和重新创建

使用频繁切换时用v-show,运行时较少改变时用v-if

V-if=’false’v-if是条件渲染,当false的时候不会渲染

使用v-if的时候,如果值为false,那么页面将不会有这个html标签生成

v-show则是不管值是为true还是false,html元素都会存在,只是css中的display显示或隐藏

v-show 仅仅控制元素的显示方式,将 display 属性在 block 和 none 来回切换;而v-if会控制这个 DOM 节点的存在与否。当我们需要经常切换某个元素的显示/隐藏时,使用v-show会更加节省性能上的开销;当只需要一次显示或隐藏时,使用v-if更加合理。

8.开发中常用的指令有哪些?

v-model:一般用在表达输入,很轻松的实现表单控件和数据的双向绑定

v-html:更新元素的innerHTML

v-show与v-if:条件渲染,注意二者区别

v-on:click:可以简写为@click,@绑定一个事件。如果事件触发了,就可以指定事件的处理函数

v-for:基于源数据多次渲染元素或模板

v-bind:当表达式的值改变时,将其产生的连带影响,响应式地作用于DOM语法

v-bind:title=”msg”简写:title="msg"

9.绑定class的数组用法

1.对象方法v-bind:class="{'orange':isRipe, 'green':isNotRipe}”

2.数组方法v-bind:class="[class1,class2]"

3.行内v-bind:style="{color:color,fontSize:fontSize+'px'}”

10.路由跳转方式

1.router-link标签会渲染为标签,咋填template中的跳转都是这种;

2.另一种是编辑是导航,也就是通过js跳转比如router.push('/home')

12. computed和watch有什么区别

computed

computed是计算属性,也就是计算值,它更多用于计算值的场景

computed具有缓存性,computed的值在getter执行后是会缓存的,只有在它依赖的属性值改变之后,下一次获取computed的值时重新调用对应的getter来计算

computed适用于计算比较消耗性能的计算场景

watch

watch更多的是[观察]的作用,类似于某些数据的监听回调,用于观察props $emit或者本组件的值,当数据变化时来执行回调进行后续操作

无缓存性,页面重新渲染时值不变化也会执行

小结

当我们要进行数值计算,而且依赖于其他数据,那么把这个数据设计为computed

如果你需要在某个数据变化时做一些事情,使用watch来观察这个数据变化。

13. vue组件的scoped属性的作用

在style标签上添加scoped属性,以表示它的样式作用于当下的模块,很好的实现了样式私有化的目的;

但是也得慎用:样式不易(可)修改,而很多时候,我们是需要对公共组件的样式做微调的;

解决办法:

①:使用混合型的css样式:(混合使用全局跟本地的样式) /* 全局样式 */ /* 本地样式 */

②:深度作用选择器()如果你希望 scoped 样式中的一个选择器能够作用得“更深”,例如影响子组件,你可以使用 操作符: .a .b { /* ... */ }

14. vue是渐进式的框架的理解:( 主张最少,没有多做职责之外的事 )

Vue的核心的功能,是一个视图模板引擎,但这不是说Vue就不能成为一个框架。如下图所示,这里包含了Vue的所有部件,在声明式渲染(视图模板引擎)的基础上,我们可以通过添加组件系统、客户端路由、大规模状态管理来构建一个完整的框架。更重要的是,这些功能相互独立,你可以在核心功能的基础上任意选用其他的部件,不一定要全部整合在一起。可以看到,所说的“渐进式”,其实就是Vue的使用方式,同时也体现了Vue的设计的理念

在我看来,渐进式代表的含义是:主张最少。视图模板引擎

每个框架都不可避免会有自己的一些特点,从而会对使用者有一定的要求,这些要求就是主张,主张有强有弱,它的强势程度会影响在业务开发中的使用方式。

比如说,Angular,它两个版本都是强主张的,如果你用它,必须接受以下东西:

必须使用它的模块机制- 必须使用它的依赖注入- 必须使用它的特殊形式定义组件(这一点每个视图框架都有,难以避免)

所以Angular是带有比较强的排它性的,如果你的应用不是从头开始,而是要不断考虑是否跟其他东西集成,这些主张会带来一些困扰。

Vue可能有些方面是不如React,不如Angular,但它是渐进的,没有强主张,你可以在原有大系统的上面,把一两个组件改用它实现,当jQuery用;也可以整个用它全家桶开发,当Angular用;还可以用它的视图,搭配你自己设计的整个下层用。也可以函数式,都可以,它只是个轻量视图而已,只做了自己该做的事,没有做不该做的事,仅此而已。

渐进式的含义,我的理解是:没有多做职责之外的事。

15.vue.js的两个核心是什么(数据驱动、组件系统。)

数据驱动:Object.defineProperty和存储器属性: getter和setter(所以只兼容IE9及以上版本),可称为基于依赖收集的观测机制,核心是VM,即ViewModel,保证数据和视图的一致性。

16.vue常用修饰符

修饰符分为:一般修饰符,事件修身符,按键、系统

①一般修饰符:

.lazy:v-model 在每次 input 事件触发后将输入框的值与数据进行同步 。你可以添加 lazy 修饰符,从而转变为使用 change 事件进行同步

inputv-model.lazy="msg"

.number

inputv-model.number="age"type="number"

.trim

1.如果要自动过滤用户输入的首尾空白字符inputv-model.trim='trim'

② 事件修饰符

av-on:click.stop="doThis"/a!-- 阻止单击事件继续传播 --

formv-on:submit.prevent="onSubmit"/form !-- 提交事件不再重载页面 --

av-on:click.stop.prevent="doThat"/a !-- 修饰符可以串联 --

formv-on:submit.prevent/form !-- 只有修饰符 --

divv-on:click.capture="doThis".../div !-- 添加事件监听器时使用事件捕获模式 --  !-- 即元素自身触发的事件先在此处处理,然后才交由内部元素进行处理 --

divv-on:click.self="doThat".../div !-- 只当在 event.target 是当前元素自身时触发处理函数 -- !-- 即事件不是从内部元素触发的 --

av-on:click.once="doThis"/a !-- 点击事件将只会触发一次 --

③按键修饰符

全部的按键别名:

.enter.tab.delete(捕获“删除”和“退格”键).esc.space.up.down.left.right.ctrl.alt.shift.meta

inputv-on:keyup.enter="submit"或者input@keyup.enter="submit"

④系统修饰键 (可以用如下修饰符来实现仅在按下相应按键时才触发鼠标或键盘事件的监听器。)

.ctrl.alt.shift.meta

input@keyup.alt.67="clear"或者div@click.ctrl="doSomething"Dosomething/div!-- Ctrl + Click --

20.Vue 组件中 data 为什么必须是函数

vue组件中data值不能为对象,因为对象是引用类型,组件可能会被多个实例同时引用。

如果data值为对象,将导致多个实例共享一个对象,其中一个组件改变data属性值,其它实例也会受到影响。

vue面试题(1)

1.css只在当前组件起作用

答:在style标签中写入 scoped 即可 例如:style scoped/style

2.v-if 和 v-show 区别

答:v-if按照条件是否渲染,v-show是display的block或none;

3.$route和$router的区别

答:$route是“路由信息对象”,包括path,params,hash,query,fullPath,matched,name等路由信息参数。而$router是“路由实例”对象包括了路由的跳转方法,钩子函数等。

4.vue.js的两个核心是什么?

答:数据驱动、组件系统

5.vue几种常用的指令

答:v-for 、 v-if 、v-bind、v-on、v-show、v-else

6.vue常用的修饰符?

答:.prevent: 提交事件不再重载页面;

        .stop: 阻止单击事件冒泡;

        .self: 当事件发生在该元素本身而不是子元素的时候会触发;

       .capture: 事件侦听,事件发生的时候会调用

7.v-on 可以绑定多个方法吗?

答:可以

8.vue中 key 值的作用?

答:当 Vue.js 用 v-for 正在更新已渲染过的元素列表时,它默认用“就地复用”策略。如果数据项的顺序被改变,Vue 将不会移动 DOM 元素来匹配数据项的顺序, 而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素。key的作用主要是为了高效的更新虚拟DOM。

9.什么是vue的计算属性?

答:在模板中放入太多的逻辑会让模板过重且难以维护,在需要对数据进行复杂处理,且可能多次使用的情况下,尽量采取计算属性的方式。好处:

①使得数据处理结构清晰;

②依赖于数据,数据更新,处理结果自动更新;

③计算属性内部this指向vm实例;

④在template调用时,直接写计算属性名即可;

⑤常用的是getter方法,获取数据,也可以使用set方法改变数据;

⑥相较于methods,不管依赖的数据变不变,methods都会重新计算,但是依赖数据不变的时候computed从缓存中获取,不会重新计算。

10.vue等单页面应用及其优缺点

答:优点:Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件,核心是一个响应的数据绑定系统。MVVM、数据驱动、组件化、轻量、简洁、高效、快速、模块友好。

缺点:不支持低版本的浏览器,最低只支持到IE9;不利于SEO的优化(如果要支持SEO,建议通过服务端来进行渲染组件);第一次加载首页耗时相对长一些;不可以使用浏览器的导航按钮需要自行实现前进、后退。

注:本文章为网络收集整理

vue常见面试题(3)

1. 什么是vue的计算属性computed

计算属性是需要复杂的逻辑,可以用方法method代替

2.vue-cli提供的几种脚手架模板

vue-cli 的脚手架项目模板有browserify 和 webpack;

3.组件中传递数据?

4. vue-router实现路由懒加载( 动态加载路由 )

5. vue-router 的导航钩子,主要用来作用是拦截导航,让他完成跳转或取消

6. 完整的 vue-router 导航解析流程

7. vue-router如何响应 路由参数 的变化?

原来的组件实例会被复用。这也意味着组件的生命周期钩子不会再被调用。你可以简单地 watch (监测变化) $route 对象:

8.vue-router的几种实例方法以及参数传递

name传递

to来传递

采用url传参

9. is的用法(用于动态组件且基于 DOM 内模板的限制来工作。)

is用来动态切换组件,DOM模板解析

tabletris="my-row"/tr /table

10.vuex是什么?怎么使用?哪种功能场景使用它?

是什么:vue框架中状态管理:有五种,分别是 State、 Getter、Mutation 、Action、 Module

使用:新建一个目录store,

场景:单页应用中,组件之间的状态。音乐播放、登录状态、加入购物车

vuex的State特性

A、Vuex就是一个仓库,仓库里面放了很多对象。其中state就是数据源存放地,对应于一般Vue对象里面的data

B、state里面存放的数据是响应式的,Vue组件从store中读取数据,若是store中的数据发生改变,依赖这个数据的组件也会发生更新

C、它通过mapState把全局的state和getters映射到当前组件的computed计算属性中

vuex的Getter特性

A、getters可以对State进行计算操作,它就是Store的计算属性

B、虽然在组件内也可以做计算属性,但是getters可以在多组件之间复用

C、如果一个状态只在一个组件内使用,是可以不用getters

vuex的Mutation特性

改变store中state状态的唯一方法就是提交mutation,就很类似事件。每个mutation都有一个字符串类型的事件类型和一个回调函数,我们需要改变state的值就要在回调函数中改变。我们要执行这个回调函数,那么我们需要执行一个相应的调用方法:store.commit。

Action类似于mutation,不同在于:Action提交的是mutation,而不是直接变更状态;Action可以包含任意异步操作,Action函数接受一个与store实例具有相同方法和属性的context对象,因此你可以调用context.commit提交一个mutation,或者通过context.state和context.getters来获取state和getters。Action通过store.dispatch方法触发:eg。store.dispatch('increment')

vuex的module特性Module其实只是解决了当state中很复杂臃肿的时候,module可以将store分割成模块,每个模块中拥有自己的state、mutation、action和getter

关于vue面试题面试必问和vue面试必问的问题的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

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

1 评论

您需要 登录账户 后才能发表评论

发表评论

欢迎 访客 发表评论