用最简单的话去面试(vue篇)

105 阅读6分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第10天,点击查看活动详情

大家好,我是大帅子,今天跟大家讲一下如何言简意赅的回答每一次面试,话不多说直接开始,每个面试题都用最简单的一句话来说


Vue的最大优势是什么?

  • 双向数据绑定,
  • 数据驱动视图,
  • 组件化开发
  • 数据和视图分离
  • 单页面应用可以实现页面数据局部刷新

最后提一句,我们中国人自己写的框架,文档好理解,嘎嘎好用 (跟朋友聊天的语气说出来)

Vue常用修饰符有哪些?

  • .prevent: 提交事件不再重载页面;
  • .stop: 阻止单击事件冒泡;
  • .once: 只执行一次这个事件
  • .enter:监听键盘enter键

这个自己记得多少,从容淡定的说多少就好了

对Vue渐进式的理解

  • 使用模块化规范,实现自助餐式开发,用什么导什么。 最大程度上节省资源。

说出至少4个Vue指令及作用

  • v-on 给标签绑定函数,可以缩写为@,例如绑定一个点击函数 函数必须写在methods里面
  • v-bind 动态绑定 作用: 及时对页面的数据进行更改, 可以简写成:分号
  • v-slot: 缩写为#, 组件插槽
  • v-for 根据数组的个数, 循环数组元素的同时还生成所在的标签
  • v-show 显示内容
  • v-if 显示与隐藏
  • v-else 必须和v-if连用 不能单独使用 否则报错
  • v-text 解析文本
  • v-html 解析html标签

这种都是记住多少说出来就好了

v-show和v-if的区别

都是可以使用隐藏元素 , 频繁切换用v-show,不频繁切换用v-if

Vue中key值作用

使用key可以给dom添加一个 唯一标识符,让vue强制更新dom

这里我们可以提一下key为什么要用id,用index,用了跟没用一样

因为v-for数据项的顺序改变,Vue 也不会移动 DOM 元素来匹配数据项的顺序,而是就地更新每个元素 ,但是id是独一无二的,所以key的值要绑定id

Vue中有时候数组会更新页面,有时候不更新,这是为什么

这问题有时候别人会这么问,你平时有没有修改过vue中的数据,但是数据却不更新的情况,这种问法就很隐晦

因为vue内部只能监测到数组顺序/位置的改变/数量的改变, 但是值被重新赋予监测不到变更, 可以用 Vue.set() / vm.$set()

计算属性和侦听器区别

计算属性

  • 监听多个属性:只要计算属性内部数据变化就会触发
  • 有缓存机制(必须要说的)

侦听器

  • 监听一个属性
  • 不会缓存(这个可以不用回答)

自己可以对我上述的话精简一下,我觉得已经够精简了

Vue组件传值

  • 父传子

      1. 子组件props定义变量
      1. 父组件在使用子组件时通过行内属性给props变量传值
    • 特点:单向数据流
  • 子传父

    • 1.子组件:$emit触发父的事件
    • 2.父在使用组件用@自定义事件名=父的方法 (子把值带出来)
    • 特点:事件监听

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

  • 如果data是一个对象,对象是引用类型。 一旦某一个地方修改,就会全部修改
  • data是一个函数,每一次复用组件的时候就会从这个函数返回一个新的对象。 这样组件在复用的时候就可以做到数据互不干扰。

scoped作用与原理

  • 作用:组件css作用域,避免子组件内部的css样式被父组件覆盖

    • 默认情况下,如果子组件和父组件css选择器权重相同,优先加载父组件css样式
  • 原理:给元素添加一个自定义属性 v-data-xxxxx

    • 一针见血答案: 通过属性选择题来提高css权重值

vue生命周期总共分为几个阶段?

在我们回答这大段话之前,我们可以直接说 四个阶段,八个钩子

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

1* )beforeCreate*

​ 在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。

2* )created*

​ 在实例创建完成后被立即调用。在这一步,实例已完成以下的配置:数据观测 (data observer), 属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。

3* )beforeMount*

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

4* )mounted*

​ el 被新创建的 vm.替换,并挂载到实例上去之后调用该钩子。如果实例挂载了一个文档内元素,当被调用时el 也在文档内。

5* )beforeUpdate*

​ 数据更新时调用,发生在虚拟 DOM 打补丁之前。这里适合在更新之前访问现有的 DOM,比如手动移除已添加的事件监听器。该钩子在服务器端渲染期间不被调用,因为只有初次渲染会在服务端进行。

6* )updated*

​ 由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。

7* )activated*

​ keep-alive 组件激活时调用。该钩子在服务器端渲染期间不被调用。

8* )deactivated*

​ keep-alive 组件停用时调用。该钩子在服务器端渲染期间不被调用。

9* )beforeDestroy*

​ 实例销毁之前调用。在这一步,实例仍然完全可用。该钩子在服务器端渲染期间不被调用。

10* )destroyed*

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

第一次加载页面会触发哪几个钩子函数?

四个钩子

  • beforeCreate,
  • created,
  • beforeMount,
  • mounted 这几个钩子函数

Vue 的 nextTick 的原理是什么?

nextTick 的原理是 vue 通过异步队列控制 DOM 更新

自定义指令的方法有哪些?它有哪些钩子函数?还有哪些钩子函数参数?

  • 全局定义指令:在vue对象的directive方法里面有两个参数,一个是指令名称,另外一个是函数。组件内定义指令:directives
  • 钩子函数:bind(绑定事件触发)、inserted(节点插入的时候触发)、update(组件内相关更新)
  • 钩子函数参数:el、binding

vue路由作用与原理

  • 路由作用: 实现单页面应用
  • 原理:监听location的hash值

vuex作用及五大组成部分

  • vuex作用: 全局数据管理 解决复杂的父子组件传值
  • state作用:存储数据
  • getter作用:派生数据。相当于state计算属性
  • mutations作用:修改state中的数据
  • actions作用: 异步更新数据
  • module作用:模块化处理vuex数据

好了,这边已经给大家介绍到这里,以上是我自己的理解,希望可以帮到大家, 欢迎留言我这边一定会第一时间给大家解答,喜欢的可以点赞收藏
🐣---->🦅         还需努力!大家一起进步!!!