当前位置:   article > 正文

前端Vue的面试题目_前端面试 谈谈对vue的理解

前端面试 谈谈对vue的理解

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

1、谈谈你对Vue的理解

  • Vue是一套用于构建用户界面渐进式的JavaScript框架。
  • 它有三个优点:
  • 1、采用了组件化模式,提高代码的复用率,且让代码更好地维护(封装组件)。
  • 2、声明式编码,让程序员不用直接操作DOM,提高开发效率。
  • 3、使用虚拟DOM+优秀的Diff算法,尽量复用DOM节点。
概念
构建用户界面把数据整理到页面中
渐进式自底向上逐层应用,从简单应用到复杂应用(从一个轻量小巧的核心库到可以引用各式各样的Vue插件)
组件化把(html、css、js)文件组合封装成一个vue文件,一个vue就是一个组件
命令式编码操作DOM,写一步操作一步
声明式编码通过vue-for指令直接遍历循环,不需要操作DOM
虚拟DOM把数据变成虚拟DOM(内存里的数据),再变成页面中的真实DOM
Diff算法比较虚拟DOM数据前后更新变化,之前有的数据就直接使用,没有的就添加到虚拟DOM中

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 的区别和运用的场景

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/257091
推荐阅读
相关标签
  

闽ICP备14008679号