前端Vue的面试题目

Vue.js官网:https://cn.vuejs.org/

1、什么是Vue

  • Vue是一套用于构建用户界面的渐进式的JavaScript框架。
  • Vue 的核心库只关注视图层,方便与插件第三方库或既有项目整合。
  • Vue.js 的目标是通过尽可能简单的 API 实现动态数据绑定和组合视图组件。

2、Vue的优点

  • 1、轻量级的框架: 只关注视图层,是一个构建数据的视图集合,大小只有几十kb,Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统
  • 2、双向数据绑定:这是vue.js最大的优点,通过MVVM思想实现数据的双向绑定,让开发者不用再操作dom对象,有更多的时间去思考业务逻辑。
  • 3、组件化: 通过组件,把一个单页应用中的各种模块拆分到一个个单独的组件中,只要先在父级应用中写好各种组件标签,并且在组件标签中写好要传入组件的参数,再分别写好各种组件的实现,然后整个应用就算做完了。
  • 4、视图,数据,结构分离:使数据的更改更为简单,不需要进行逻辑代码的修改,只需要操作数据就能完成相关操作
  • 5、虚拟dom,更高的运行效率 :基于虚拟dom一种可以预先通过 javascript 进行各种计算,把最终的 DOM操作计算出来并优化的技术,由于这个DOM操作属于预处理操作,并没有真实的操作DOM,所以叫做虚拟DOM。
  • 6、容易学习:对初学者友好、入门容易、学习资料多,拥有大量成熟、稳定的基于 vue.js 的 ui 框架、常用组件,拿来即用实现快速开发

3、什么是MVVM模式

  • MVVM分为Model、View、ViewModel
  • Model 代表数据模型,数据和业务逻辑都在Model层中定义;
  • View 代表UI视图,负责数据的展示(html);
  • ViewModel 负责监听 Model 中数据的改变并且控制视图View的更新,处理用户交互操作;

MVVM的思想:Model 和 View 并无直接关联,而是通过 ViewModel 来进行联系的,当 Model 中的数据改变时会触发 View 层的刷新,View 中由于用户交互操作而改变的数据也会在Model 中同步,实现数据双向绑定。

  • 好处:这种模式实现了 Model 和 View 的数据自动同步,因此开发者只需要专注对数据的维护操作即可,而不需要自己操作 dom。
    -在这里插入图片描述

4、什么是MVC模式

  • MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。
  • Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。
  • View(视图) - 视图代表模型包含的数据的可视化。
  • Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。

MVC的思想:简单来说,就是Controller负责将Model的数据用View显示出来,将Model的数据展示给用户看,并处理用户对View界面的操作。

在这里插入图片描述


5、MVVM和MVC的区别

  • 1、MVVM是对MVC的增强版,将MVC中Controller的数据和逻辑处理部分抽离出来,放在了ViewModel中,这样只需做好View与ViewModel的数据绑定既可。
  • 2、MVVM主要解决了MVC中大量的DOM操作使页面渲染性能降低,加载速度变慢,影响用户体验。当和Model频繁发生变化,开发者需要主动更新到View。

vue 的优点:

  • 1、低耦合。视图(View)可以独立于 Model 变化和修改,一个 ViewModel 可以绑定到不同的"View"上,当 View变化的时候 Model 可以不变,当 Model 变化的时候 View 也可以不变。
  • 2、可重用性。把一些视图逻辑放在一个 ViewModel 里面,让很多 view 重用这段视图逻辑。
  • 3、独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计。
    -4、 可测试。界面素来是比较难于测试的,而现在测试可以针对 ViewModel 来写。

6、vue生命周期的理解

6-1、什么是vue的生命周期

  • Vue实例从创建到销毁的过程,就是生命周期。也就是从开始创建(new Vue())、初始化数据、编译模板(created)、挂载Dom→渲染(mounted)、更新→渲染(update)、卸载(destory)等一系列过程,我们称这是Vue 的生命周期。

6-2、vue生命周期的作用是什么

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

6-3、vue生命周期总共有几个阶段

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

6-4、第一次页面加载会触发哪几个钩子?

  • 第一次页面加载时会触发 beforeCreate, created, beforeMount, mounted 这几个钩子

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

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

6-6、简单描述每个周期具体适合哪些场景?
在这里插入图片描述


7、v-if 和 v-show 的区别

v-if 和 v-show 的区别
v-if 会根据初始的条件(data里自己的定义的数据)来进行真正的渲染(组件真正的销毁和重建),如果条件为真,才会开始渲染条件块,如果条件为假,则不会渲染条件块。
v-show 不管初始的条件是什么,元素总是会被渲染,并且只是简单的基于 CSS display: none 或者 display: block 的属性进行切换。

共同点:

  • v-if和v-show都是通过判断绑定数据的true\false来展示的

用法推荐:

  • v-if更适合于带有权限的操作,渲染时判断权限数据,有则展示该功能,没有则删除。
  • v-show更适合于日常使用,可以减少数据的渲染,减少不必要的操作。
  • 综上,当我们需要经常切换某个元素的显示/隐藏时,使用v-show会更加节省性能上的开销;当只需要一次显示或隐藏时,使用v-if更加合理。

8、什么是Vuex

  • Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。每一个 Vuex 应用的核心就是 store(仓库)。“store” 基本上就是一个容器,它包含着你的应用中大部分的状态 ( state )。
  • (1)Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。
  • (2)改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化。
  • (3) 如果不打算开发大型单页应用,使用 Vuex 可能是繁琐冗余的。确实是如此——如果应用够简单,最好不要使用 Vuex。一个简单的 store 模式就足够了。但是,如果需要构建一个中大型单页应用,很可能会考虑如何更好地在组件外部管理状态,Vuex 将会成为自然而然的选择。
Vuex模块
State 基本数据,定义了应用状态的数据结构,可以在这里设置默认的初始状态
Getter 从基本数据派生的数据,允许组件从 Store 中获取数据,mapGetters 辅助函数仅仅是将 store 中的 getter 映射到局部计算属性
Mutation 是唯一更改 store 中状态的方法,且必须是同步函数
Action 像一个装饰器,包裹mutations,使之可以异步。用于提交 mutation,而不是直接变更状态,可以包含任意异步操作
Module 模块化Vuex,允许将单一的 Store 拆分为多个 store 且同时保存在单一的状态树中

9、Vue 的单向数据流的理解

  • 所有的 prop 都使得其父子 prop 之间形成了一个单向下行绑定:父级 prop 的更新会向下流动到子组件中,但是反过来则不行。
  • 这样会防止从子组件意外改变父级组件的状态,从而导致你的应用的数据流向难以理解。 额外的,每次父级组件发生更新时,子组件中所有的 prop
    都将会刷新为最新的值。 这意味着你不应该在一个子组件内部改变 prop。如果你这样做了,Vue 会在浏览器的控制台中发出警告。
  • 子组件想修改时,只能通过 $emit 派发一个自定义事件,父组件接收到后,由父组件修改。

10、computed 和 watch 的区别和运用的场景

猜你喜欢

转载自blog.csdn.net/weixin_45065754/article/details/123305957