vue面试题2022(vue面试题2022针对vue30)

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

本文目录一览:

史上最全前端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只在当前组件中起作用?

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面试题

映射关系简化,隐藏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提供的全局状态管理系统,用于多个组件中的数据共享、数据缓存。

问题:无法持久化。

2022前端开发面试记录(深圳篇)

2022年来到深圳,感觉到了与之前所在城市的差异,心里多少有点落差。虽然时机不太对吧,但是相信一切都会好起来的,给自己加油呀!

整理了一些面试被问到的问题,虽然很多是无效面试,但是我也强行问了面试官,从他们的回答中猜测了一下他们关注的面试点,所以也算是有点收获吧,只是浪费了很多简历和路费,哭唧唧。

——1、区块链——

1-1、vue生命周期;

1-2、vuex属性;

1-3、用户开始登录到登录成功都发生了什么;

1-4、git常用的命令;

——2、金融:vue——

笔试:

2-1、深浅拷贝的区别,为什么会出现深浅拷贝,浅拷贝的优势;

2-2、强制中断 foreach 遍历;

2-3、多处组件复用;

2-4、你对前端是什么概念,前端在整个软件生态内是什么角色;

2-5、Vue2 中数据变化但视图没有发生同步更新,描述一下出现的场景,解决方式,以及该问题发生的可能原因;

2-6、nextTick 是如何确保开发者能够获取到最新的 DOM 状态的;

2-7、如何使用 mixins,有何利弊;

2-8、使用 Hooks 模式开发时,useMemo,useCallback 常用来作为优化的手段。描述一下它们各自的适用场景,以及背后的原理实现?;

2-9、前端从 Jquery 时代演变至如今的三大框架,这种演变的根源是什么,jquery 解决了什么问题,如今的三大框架又是为了解决什么问题出现的?

视频面试:

2-10、js遍历树形结构,每个节点都有一个唯一ID,只能遍历一次;

2-11、组件封装的意义;

——3、知识产权:vue2、vue3、ts、react——

3-1、说一说面向对象的理解,包括继承、封装、多态等;

3-2、说一说promise;

3-3、webpack优化;

3-4、vuex使用场景;

3-5、描述一下对vue响应式原理的理解;

3-6、vue生命周期;

3-7、父子组件钩子函数执行顺序;

3-8、v-if和v-show;

3-9、js数据类型;

3-10、实现深拷贝;

——4、物流——

4-1、vue生命周期;

4-2、生命周期-修改元素样式在生命周期的哪个阶段;

4-3、生命周期-修改数据在哪个阶段;

4-4、生命周期-destroy里面会做哪些操作;

4-5、怎么修改title的内容;

4-6、父子组件传参的具体写法;

4-7、v-model的多种写法;

4-8、js数据类型;

4-9、判断数组的方法;

4-10、实现左边固定右边自适应的布局;

4-11、实现div垂直水平居中;

4-12、flex:1;

4-13、flex详解;

4-14、call,apply,bind是干什么的;

——5、新兴产业——

5-1、封装路由,怎么拦截路由;

5-2、浏览器缓存有哪些,又问localStorage和sessionStrorage的区别和应用场景;

5-3、浏览器强缓存和协商缓存;

5-4、webpack打包机制,构建过程和配置;

5-5、性能优化方法;

5-6、前端的业务和后端的API是怎么做到数据实时请求的(问的其实是前端对后端API接口的封装和管理);

5-7、computed和watch;

5-8、说了几个关于大屏的应用场景,有没有做过,怎么做的;

——6、某水果:vue2、vue3、ts、各种前沿技术都用——

6-1、怎么封装一个组件库/工具类库,比如vue封装过什么复杂组件,jquery封装过什么类库;

6-2、get和post的区别,传参格式等;

6-3、promise怎么用的;

6-4、原型链,test()的原型链;

6-5、websocket;

6-6、es6中的generator;

6-7、es6中的set和map有啥区别,set为什么能去重;

6-8、项目难点;

——7、医疗健康:vue——

7-1、vue自定义指令配置;

7-2、webpack的理解;

7-3、对node的了解,用过express吗;

7-4、项目中的拖拽是怎么做的;

7-5、websocket和socket的区别;

7-6、听过mqtt吗,因为没听过所以解释了一下activemq的用法;

7-7、二维地图的聚合,如果有十万个点,会做什么优化;

7-8、地图实现多个点连成一条线会怎么做;

7-9、地图实现一条曲线;

7-10、内网下git怎么用的;

7-11、openlayers渲染机制;

7-12、父子组件通信方法;

7-13、router中实现拦截;

7-14、对象合并的方法;

7-15、父子组件的生命周期执行顺序,渲染阶段为什么会先执行父组件再执行子组件;

7-16、vue生命周期;

7-17、npm run dev, run build可以在项目中的什么位置找到;

7-18、vue中跳转页面的方法;

7-19、mixins用过吗;

7-20、判断引用类型的方法;

7-21、js数据类型;

7-22、判断基本数据类型的方法;

7-23、for in和for of的用法和区别,两者遍历的是索引还是属性值,两者都可以遍历对象吗;

7-24、foreach和map的区别,两者会不会改变原数组;

7-25、主要用什么技术栈;

7-26、行内元素和块级元素的区别,分别都有哪些,行块级元素有哪些;

7-27、div垂直水平居中,grid知不知道怎么用;

7-28、splice和slice;

——8、智慧园区:vue2、vue3、ts、uniapp——

8-1、flex了解吗,flex布局方向,flex:1 0的页面效果是怎样的;

8-2、做过移动端吗,了解uniapp吗;

8-3、keep-alive;问了一个没听明白的,可能和keep-alive有关系;

8-4、vuex中的action;不用vuex,怎么代替vuex;

8-5、promise.all和promise.on;

8-6、防止表单重复提交;

8-7、async,await的使用;

8-8、vue3和ts的了解;

8-9、防抖怎么控制时间;

8-10、vue中的data为什么要设计成一个函数;

——9、智慧工地:vue、uniapp、小程序——

9-1、Vuex是干什么的;

9-2、openlayers怎么用的;

9-3、性能优化;

9-4、spa首屏加载优化;

9-5、bundler.js太大,打包怎么优化;

9-6、加密方式了解多少,比如md5,base64等,一大堆没听过的;

9-7、冒泡排序的实现原理;

9-8、js设计模式;

——10、某快递公司外包——

10-1、一棵树的数据,给的是列表格式,转换成树形结构;

10-2、项目相关的,聊天怎么做的,拖拽怎么做的,拖拽的数据怎么渲染的,拖拽重叠怎么处理的;

10-3、js设计模式;

——11、三维:vue、cesium——

11-1、一棵树的数据,给的是列表格式,转换成树形结构;

11-2、openlayers怎么用的,发布过wms吗,发布流程是怎样的;

11-3、openlayers转换经纬度的方法名是什么;

11-4、cesium常用的函数;

11-5、vue数据双向绑定原理;

11-6、Vue中data属性如果改变一个数组的下标,会不会马上发生变化,不变化可以怎么解决

11-7、数组常用方法有哪些;

11-8、 map和filter的区别;

11-9、es6常用的方法;

11-10、父子组件通信,兄弟组件通信;

11-11、new具体进行了什么操作;

——12、医疗:vue、angular——

12-1、js渲染机制和运行机制;

12-2、vue数据绑定原理;

——13、建设行业:vue、uniapp——

笔试:

13-1、||与运算符;

13-2、垂直居中方案;

13-3、let a=arr, b=a, c=arr.concat(), a[0]=3,打印b和c,应该是深浅拷贝;

13-4、实现font-size:12;

13-5、接口路径,给一个地址 ,根据url请求接口路径写出完整路径,’/ geturl.do ’,’ geturl.do ’,’../ geturl.do ’;

13-6、微信小程序流程和主要文件;

13-7、获取url参数及内容;

13-8、$(function(){}) / (function(){}) / (function(){})()的区别;

13-9、前端优化方案;

面试:

13-10、项目难点;

13-11、git工作流;

13-12、jquery项目会不会用webpack打包;

13-13、webpack优化;

13-14、web优化;

——14、文化:uniapp——

14-1、ssr渲染;

14-2、ajax和axios的区别;

14-3、cookie和session的区别;

14-4、vue生命周期;

14-5、数据请求写在哪个生命周期中;

14-6、router的history模式和hash模式;

14-7、工作中的开发流程;

14-8、uniapp的开发流程和坑;

14-9、uniapp滑动问题,下滑切换视频不生效,一般是什么原因;

14-10、uniapp加载速度慢,点击加载图片速度太慢,一般是什么原因;

——15、企业平台某外包:vue,node,性能优化——

15-1、说一说websocket;

15-2、vue数据双向绑定原理;

15-3、项目难点;

15-4、对mvvm、mvc、mvp等的理解;

15-5、vue的常见指令;

15-6、computed和watch;

15-7、class和style怎么绑定;

15-8、ajax和axios的区别;

15-9、axios拦截器,axios的post请求;

15-10、对前端渲染,服务端渲染的理解;

——16、智慧城市:vue,node,three.js——

16-1、vue生命周期;

16-2、vue组件通信方法;

16-3、js的继承;

16-4、oracle、mysql、sqllite的区别;

16-5、oracle连表查询;

16-6、openlayers项目场景;

16-7、cesium项目场景;

——17、租房:jquery+layui,vue2——

17-1、笔试:

17-2、foo打印题;

17-3、this打印题;

17-4、变量提升打印题;

17-5、let arr=[1,2,[5,8,[9,[3,5,]7,]20,37]] 把数组扁平化成一个数组,并进行去重升序;

17-6、let a=[1,2,3,4,5,6,7]; let b=[4,5,6]; 求b在a中第一次出现的位置;

17-7、面试:主要问项目

——18、跑腿:vue2,vue3+ts——

18-1、对html5语义化的理解;

18-2、css实现一个三角形;

18-3、css怎么实现0.5px的线,为什么有这种需求,涉及到兼容性问题;

18-4、怎么解决变量提升的问题;

18-5、es6新增了哪些定义变量的方式;

18-6、const定义的变量可以被修改吗;

18-7、map和filter的区别,会改变原数组吗;

18-8、es6去重的方法;

18-9、谈一谈对promise的理解;

18-10、除了链式调用,promise还可以怎么处理同步请求(async/await);

18-11、对vue响应式原理的理解,核心是什么;

18-12、对vue生命周期每个阶段的理解;

18-13、为什么要用key,key有什么作用;

18-14、v-if和v-show;

18-15、Vue中data为什么是一个函数;

18-16、vue各场景下的传值方式有哪些,比如父子组件,兄弟组件,祖孙组件;

18-17、对vuex的理解和使用场景;

18-18、vue常见修饰符;

18-19、Vue3用过吗(因为没用过,所以就只针对响应式原理说了一下vue3和vue2的区别);

——19、实业:jquery,vue2,vue3——

笔试:需要解释

19-1、html5新标签,css3新特性;

19-2、js+css3实现某元素以50px每秒的速度左移100px;

19-3、css实现左中右布局,不改变文档流;

19-4、js兼容性有哪些,以及常见的解决方案;

19-5、描述一下事件循环机制eventloop,eventloop解决了什么问题;

19-6、给了一个题,大概是后端返回的接口数据,data的格式有很多,比如null,对象,数组,字符串等,怎么处理这种问题;

19-7、前端性能优化方法,首屏页面怎么优化;

19-8、用js写一个方法实现数据去重并排序(用es5和es6+实现);

19-9、给定一个数组,把数组中为0的往后排,其他值按顺序排序; (示例:[1,0,4,0,5,3]转换结果为[1,3,4,5,0,0])

19-10、用0,1,2代表红黄蓝三种颜色,实现以下排序,不能用array.sort实现;(示例:[0,1,0,2,0,1,2]转换结果为[0,0,0,1,1,2,2])

面试:

19-11、flex布局;flex:1对应的属性;

19-12、讲一下原型链; proto 和prototype有什么区别;字符串有没有原型;给定一个str,str.test()调用的谁的test方法;

19-13、讲一下闭包;什么情况下才能算是闭包;形成闭包的条件;列了三个题让你判断是不是闭包;

19-14、v-if和v-show是干什么的;应用场景有哪些;给定一对父子组件,默认值是false,另外有一个ajax请求,值发生了以下变化(false true false true true),在v-show和v-if中,父子组件的哪个阶段里会请求ajax;

19-15、computed的实现原理,怎么实现一个computed;

19-16、css中,transform,margin,position的都是怎么渲染的,渲染机制是什么;amd,cmd,commonjs了解吗;

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基础面试题(3)

在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。在当前阶段 data、methods、computed 以及 watch 上的数据和方法都不能被访问

实例已经创建完成之后被调用。在这一步,实例已完成以下的配置:数据观测(data observer),属性和方法的运算, watch/event 事件回调。这里没有 nextTick 来访问 Dom

在挂载开始之前被调用:相关的 render 函数首次被调用。

在挂载完成后发生,在当前阶段,真实的 Dom 挂载完毕,数据完成双向绑定,可以访问到 Dom 节点

数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁(patch)之前。可以在这个钩子中进一步地更改状态,这不会触发附加的重渲染过程

发生在更新完成之后,当前阶段组件 Dom 已完成更新。要注意的是避免在此期间更改数据,因为这可能会导致无限循环的更新,该钩子在服务器端渲染期间不被调用。

实例销毁之前调用。在这一步,实例仍然完全可用。我们可以在这时进行善后收尾工作,比如清除计时器。

Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。 该钩子在服务器端渲染期间不被调用。

可以在钩子函数 created、beforeMount、mounted 中进行异步请求,因为在这三个钩子函数中,data 已经创建,可以将服务端端返回的数据进行赋值。

能更快获取到服务端数据,减少页面 loading 时间;

ssr 不支持 beforeMount 、mounted 钩子函数,所以放在 created 中有助于一致性;

Vue2--------------vue3

beforeCreate = setup()

created = setup()

beforeMount = onBeforeMount

mounted = onMounted

beforeUpdate = onBeforeUpdate

updated = onUpdated

beforeDestroy = onBeforeUnmount

destroyed = onUnmounted

activated = onActivated

deactivated = onDeactivated

errorCaptured = onErrorCaptured

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

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

发表评论

欢迎 访客 发表评论