vue 面试题

vue 面试题 经常会被问到的面试题

1.vue优点

答:轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十kb;
简单易学:国人开发,中文文档,不存在语言障碍 ,易于理解和学习;
双向数据绑定:保留了angular的特点,在数据操作方面更为简单;
组件化:保留了react的优点,实现了html的封装和重用,在构建单页面应用方面有着独特的优势;
视图,数据,结构分离:使数据的更改更为简单,不需要进行逻辑代码的修改,只需要操作数据就能完成相关操作;
虚拟DOM:dom操作是非常耗费性能的, 不再使用原生的dom操作节点,极大解放dom操作,但具体操作的还是dom不过是换了另一种方式;
运行速度更快:相比较与react而言,同样是操作虚拟dom,就性能而言,vue存在很大的优势。

2.v-show和v-if指令的共同点和不同点?

答: 共同点:都能控制元素的显示和隐藏;
不同点:实现本质方法不同,v-show本质就是通过控制css中的display设置为none,控制隐藏,只会编译一次;v-if是动态的向DOM树内添加或者删除DOM元素,若初始值为false,就不会编译了。而且v-if不停的销毁和创建比较消耗性能。
总结:如果要频繁切换某节点,使用v-show(切换开销比较小,初始开销较大)。如果不需要频繁切换某节点使用v-if(初始渲染开销较小,切换开销比较大)。

3.vue常用的修饰符

答:.stop:等同于JavaScript中的event.stopPropagation(),防止事件冒泡;
.prevent:等同于JavaScript中的event.preventDefault(),防止执行预设的行为(如果事件可取消,则取消该事件,而不停止事件的进一步传播);
.capture:与事件冒泡的方向相反,事件捕获由外到内;
.self:只会触发自己范围内的事件,不包含子元素;
.once:只会触发一次。

4.单页面应用和多页面应用区别及优缺点

答:单页面应用(SPA),通俗一点说就是指只有一个主页面的应用,浏览器一开始要加载所有必须的 html, js, css。所有的页面内容都包含在这个所谓的主页面中。但在写的时候,还是会分开写(页面片段),然后在交互的时候由路由程序动态载入,单页面的页面跳转,仅刷新局部资源。多应用于pc端。
多页面(MPA),就是指一个应用中有多个页面,页面跳转时是整页刷新
单页面的优点:
用户体验好,快,内容的改变不需要重新加载整个页面,基于这一点spa对服务器压力较小;前后端分离;页面效果会比较炫酷(比如切换页面内容时的专场动画)。
单页面缺点:
不利于seo;导航不可用,如果一定要导航需要自行实现前进、后退。(由于是单页面不能用浏览器的前进后退功能,所以需要自己建立堆栈管理);初次加载时耗时多;页面复杂度提高很多。

5.vue3与vue2的区别

答1.项目目录结构

vue-cli2.0与3.0在目录结构方面,有明显的不同
vue-cli3.0移除了配置文件目录,config 和 build 文件夹
同时移除了 static 静态文件夹,新增了 public 文件夹,打开层级目录还会发现, index.html 移动到 public 中

2.配置项

3.0 config文件已经被移除,但是多了.env.production和env.development文件,除了文件位置,实际配置起来和2.0没什么不同
没了config文件,跨域需要配置域名时,从config/index.js 挪到了vue.config.js中,配置方法不变

3.渲染

Vue2.x使用的Virtual Dom实现的渲染
Vue3.0不论是原生的html标签还是vue组件,他们都会通过h函数来判断,如果是原生html标签,在运行时直接通过Virtual
Dom来直接渲染,同样如果是组件会直接生成组件代码

4.数据监听

Vue2.x大家都知道使用的是es5的object.defineproperties中getter和setter实现的,而vue3.0的版本,是基于Proxy进行监听的,其实基于proxy监听就是所谓的lazy
by default,什么意思呢,就是只要你用到了才会监听,可以理解为‘按需监听’,官方给出的诠释是:速度加倍,同时内存占用还减半。

5.按需引入

Vue2.x中new出的实例对象,所有的东西都在这个vue对象上,这样其实无论你用到还是没用到,都会跑一变。而vue3.0中可以用ES module
imports按需引入,如:keep-alive内置组件、v-model指令,等等。

6.vue中data为什么是一个函数?

答:Vue 中的 data 必须是个函数,因为当 data 是函数时,组件实例化的时候这个函数将会被调用,返回一个对象,计算机会给这个对象分配一个内存地址,实例化几次就分配几个内存地址,他们的地址都不一样,所以每个组件中的数据不会相互干扰,改变其中一个组件的状态,其它组件不变

7.谈谈你对MVC、MVP和MVVM的理解?

答:这三者都是框架模式,它们设计的目标都是为了解决Model和View的耦合问题。
MVC模式出现较早主要应用在后端,如Spring MVC、ASP.NET MVC等,在前端领域的早期也有应 用,如Backbone.js。它的优点是分层清晰,缺点是数据流混乱,灵活性带来的维护性问题。
MVP模式在是MVC的进化形式,Presenter作为中间层负责MV通信,解决了两者耦合问题,但P层 过于臃肿会导致维护问题。
MVVM模式在前端领域有广泛应用,它不仅解决MV耦合问题,还同时解决了维护两者映射关系的 大量繁杂代码和DOM操作代码,在提高开发效率、可读性同时还保持了优越的性能表现。

8.说说vue的渲染过程在这里插入图片描述

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

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

beforeCreate:在实例初始化之后,数据观测者( data observer)和 event/ watcher事件配置之前调用。
created:在实例创建完成后立即调用。在这一步,实例已完成以下的配置:数据观测者,属性和方法的运算, watch/event事件回调。然而,挂载阶段还没开始,$el属性目前不可见。
beforeMount:在挂载开始之前调用,相关的 render函数首次调用。
mounted: el被新创建的vm.斜体样式el替换,并且在挂载到实例上之后再调用该钩子如果root实例挂载了一个文档内元素,当调用 mounted时vm.sel也在文档内。
beforeUpdate:在数据更新时调用,发生在虛拟DOM重新渲染和打补丁之前。
updated:由于数据更改导致的虚拟DOM重新渲染和打补丁,在这之后会调用该钩。
beforeDestroy:在实例销毁之前调用。在这一步,实例仍然完全可用。
destroyed:在 Vue. js实例销毀后调用。调用后,Vue. js实例指示的所有东西都会解除绑定,所有的事件监听器会被移除,所有的子实例也会被销毁

10.谈谈你对vue中的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元素也随之变化。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue面试题下载指的是在面试前准备过程下载一些相关的Vue面试题目。以下是对于Vue面试题2023下载的回答: 在进行Vue面试时,希望能够提前了解到一些常见的Vue面试题,以便更好地准备自己的面试策略和回答技巧。对于Vue面试题2023的下载,可以通过以下途径来获取相关的题目和答案: 1. 在网上搜索:通过搜索引擎,输入关键词"Vue面试题2023下载",可以找到一些相关的网站和资源,可以下载一些Vue面试题的PDF或者文档,在准备面试的过程参考学习。 2. 在技术论坛和社区:一些技术论坛和社区会有一些Vue的讨论区,里面会有一些人分享一些自己准备面试的经验和资料,可以在这些地方提问,查找相关资源。 3. 参考优秀的面试指南:有一些优秀的面试指南会提供一些常见的面试题目,以及对应的答案和解析,可以在这些指南找到一些Vue面试题目。 4. 提问老师和同学:如果你正在参加培训课程或者有老师和同学在学习Vue,可以向他们请教一些往年的Vue面试题目,或者是通过共享资料的方式获取相关题目。 总之,下载Vue面试题目是为了更好地准备面试,提前了解可能会被面试官问到的问题,从而提高回答的质量和准确性。但是在复习过程,不仅要关注理论知识,还要编写代码来巩固和运用所学内容。平时要多写一些Vue的项目和案例,提高自己的实际操作能力。希望以上回答对您有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值