整理前端面试题(十一): Vue面试题合集

Vue.js

一. 请谈谈Vue中的MVVM模式

MVVM全称是Model-View-ViewModel

Vue是以数据为驱动的,Vue自身将DOM和数据进行绑定,一旦创建绑定,DOM和数据将保持同步,每当数据发生变化,DOM会跟着变化。 ViewModel是Vue的核心,它是Vue的一个实例。Vue实例时作用域某个HTML元素上的这个HTML元素可以是body,也可以是某个id所指代的元素。

DOMListeners和DataBindings是实现双向绑定的关键。DOMListeners监听页面所有View层DOM元素的变化,当发生变化,Model层的数据随之变化;DataBindings监听Model层的数据,当数据发生变化,View层的DOM元素随之变化。


二. v-showv-if指令的共同点和不同点?

  • v-show指令是通过修改元素的displayCSS属性让其显示或者隐藏
  • v-if指令是直接销毁和重建DOM达到让元素显示和隐藏的效果

三. 如何让CSS只在当前组件中起作用?

将当前组件的<style>修改为<style scoped>


四. <keep-alive></keep-alive>的作用是什么?

<keep-alive></keep-alive> 包裹动态组件时,会缓存不活动的组件实例,主要用于保留组件状态或避免重新渲染。

大白话: 比如有一个列表和一个详情,那么用户就会经常执行打开详情=>返回列表=>打开详情…这样的话列表和详情都是一个频率很高的页面,那么就可以对列表组件使用<keep-alive></keep-alive>进行缓存,这样用户每次返回列表的时候,都能从缓存中快速渲染,而不是重新渲染


五. Vue中引入组件的步骤?

1.采用ES6的import ... from ...语法或CommonJS的require()方法引入组件
2.对组件进行注册,代码如下

// 注册
Vue.component('my-component', {
  template: '<div>A custom component!</div>'
})

3.使用组件<my-component></my-component>


六. 指令v-el的作用是什么?

提供一个在页面上已存在的 DOM 元素作为 Vue 实例的挂载目标.可以是 CSS 选择器,也可以是一个 HTMLElement 实例,


七. 在Vue中使用插件的步骤

  1. 采用ES6的import ... from ...语法或CommonJSd的require()方法引入插件
  2. 使用全局方法Vue.use( plugin )使用插件,可以传入一个选项对象Vue.use(MyPlugin, { someOption: true })

八. 请列举出3个Vue中常用的生命周期钩子函数?

  1. created: 实例已经创建完成之后调用,在这一步,实例已经完成数据观测, 属性和方法的运算, watch/event事件回调. 然而, 挂载阶段还没有开始, $el属性目前还不可见
  2. mounted: el被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。如果 root 实例挂载了一个文档内元素,当 mounted 被调用时 vm.$el 也在文档内。
  3. activated::keep-alive组件激活时调用

九. 请简述下Vuex的原理和使用方法

数据单向流动
数据单向流动

一个应用可以看作是由上面三部分组成: View, Actions,State,数据的流动也是从View => Actions => State =>View 以此达到数据的单向流动.但是项目较大的, 组件嵌套过多的时候, 多组件共享同一个State会在数据传递时出现很多问题.Vuex就是为了解决这些问题而产生的.

Vuex可以被看作项目中所有组件的数据中心,我们将所有组件中共享的State抽离出来,任何组件都可以访问和操作我们的数据中心.

Vuex原理

上图可以很好的说明Vuex的组成,一个实例化的Vuex.Store由state, mutations和actions三个属性组成:

  • state中保存着共有数据
  • 改变state中的数据有且只有通过mutations中的方法,且mutations中的方法必须是同步的
  • 如果要写异步的方法,需要些在actions中, 并通过commit到mutations中进行state中数据的更改.

更多Vuex信息,请参考Vuex官网 : vuex.vuejs.org


十. 请谈谈Vue框架和Angular.js和React的不同

参见:Vue对比其他框架


推荐阅读更多精彩内容

  • UI组件element ★11612 - 饿了么出品的Vue2的web UI工具套件 Vux ★7503 - 基于...
    大灰狼的小绵羊哥哥阅读 7,072评论 7 124
  • 6月7、8日即将翻书页般过去,你想象自己在志愿栏里,充满好奇地写下,新闻系。 三个月后,你将一层层揭开它神秘的面纱...
    余想阅读 94评论 0 2
  • When it comes to a piece of good news that I received, I ...
    April2018阅读 82评论 0 0
  • 最怕你看到了所有人, 却唯独没有看到你自己, 见自己 见天地 见众生 生活本应如是。
    丫丫与北京城阅读 38评论 2 0
  • 关汉卿 一枝花 我是个蒸不烂煮不熟 捶不匾炒不爆 响珰珰一粒铜豌豆。 恁子弟每谁教你钻入他 锄不断砍不下 解不开顿...
    IreneZhang38516阅读 198评论 2 0