携手创作,共同成长!这是我参与「掘金日新计划 · 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组件传值
-
父传子
-
- 子组件props定义变量
-
- 父组件在使用子组件时通过行内属性给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数据
好了,这边已经给大家介绍到这里,以上是我自己的理解,希望可以帮到大家, 欢迎留言我这边一定会第一时间给大家解答,喜欢的可以点赞收藏
🐣---->🦅 还需努力!大家一起进步!!!