免费个人博客模板-专注前端行业与圈内动态-分享最具价值内容

关于VUE常会问到的部分面试题

发布:鹏仔先生2018-8-6 0:41分类: JavaScript 标签: jquery vue

共享博客 VUE

1.vue的虚拟dom?

    虚拟的DOM的核心思想是:对复杂的文档DOM结构,提供一种方便的工具,进行最小化地DOM操作。

2.如何理解vue中MVVM模式?
    MVVM全称是Model-View-ViewModel;vue是以数据为驱动的,一旦创建dom和数据就保持同步,每当数据发生变化时,dom也会变化。DOMListeners和DataBindings是实现双向绑定的关键。DOMListeners监听页面所有View层DOM元素的变化,当发生变化,Model层的数据随之变化;DataBindings监听Model层的数据,当数据发生变化,View层的DOM元素随之变化。

3.vue中<keep-alive>的作用?

    把切换出去的组件保留在缓存中,可以保留组件的状态或者避免重新渲染。


4.vue生命周期的理解?

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

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

    (3)vue生命周期总共有几个阶段: 总共分为8个阶段:创建前/后, 载入前/后,更新前/后,销毁前/销毁后。

    (4)第一次页面加载会触发哪几个钩子: 第一次页面加载时会触发 beforeCreate, created, beforeMount, mounted 这几个钩子。

    (5)DOM 渲染在哪个周期中就已经完成: DOM 渲染在 mounted 中就已经完成了。


总共分为8个阶段:

beforeCreate----创建前 

    组件实例更被创建,组件属性计算之前,数据对象data都为undefined,未初始化。 

created----创建后 

    组件实例创建完成,属性已经绑定,数据对象data已存在,但dom未生成,$el未存在 

beforeMount---挂载前 

    vue实例的$el和data都已初始化,挂载之前为虚拟的dom节点,data.message未替换 

mounted-----挂载后 

    vue实例挂载完成,data.message成功渲染。 

beforeUpdate----更新前 

    当data变化时,会触发beforeUpdate方法 

updated----更新后 

    当data变化时,会触发updated方法 

beforeDestory---销毁前 

    组件销毁之前调用 

destoryed---销毁后 

    组件销毁之后调用,对data的改变不会再触发周期函数,vue实例已解除事件监听和dom绑定,但dom结构依然存在 


5.组件之间的传值通信?
父组件向子组件传值:
    1)子组件在props中创建一个属性,用来接收父组件传过来的值;
    2)在父组件中注册子组件;
    3)在子组件标签中添加子组件props中创建的属性;
    4)把需要传给子组件的值赋给该属性
子组件向父组件传值:
    1)子组件中需要以某种方式(如点击事件)的方法来触发一个自定义的事件;
    2)将需要传的值作为$emit的第二个参数,该值将作为实参传给响应事件的方法;

    3)在父组件中注册子组件并在子组件标签上绑定自定义事件的监听。


6.vue的优点是什么?

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


7.v-show和v-if指令的共同点和不同点

    v-show指令是通过修改元素的display的CSS属性让其显示或者隐藏

    v-if指令是直接销毁和重建DOM达到让元素显示和隐藏的效果


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

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


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


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

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


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

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


12.active-class是哪个组件的属性?

    vue-router模块的router-link组件。


13.怎么定义vue-router的动态路由以及如何获取传过来的动态参数?
    在router目录下的index.js文件中,对path属性加上/:id
    使用router对象的params.id


14.vue-router有哪几种导航钩子?

    有三种

        第一种:一种是全局导航钩子:router.beforeEach(to,from,next),作用:跳转前进行判断拦截。

        第二种:组件内的钩子;
        第三种:单独路由独享组件


15.为什么避免 v-if 和 v-for 用在一起

    当 Vue 处理指令时,v-for 比 v-if 具有更高的优先级,通过v-if 移动到容器元素,不会再重复遍历列表中的每个值。取而代之的是,我们只检查它一次,且不会在 v-if 为否的时候运算 v-for


16.VNode是什么?虚拟 DOM是什么?
    Vue在 页面上渲染的节点,及其子节点称为“虚拟节点 (Virtual Node)”,简写为“VNode”。“虚拟 DOM”是由 Vue 组件树建立起来的整个 VNode 树的称呼。


17.为什么使用key?

    当有相同标签名的元素切换时,需要通过 key 特性设置唯一的值来标记以让 Vue 区分它们,否则 Vue 为了效率只会替换相同标签内部的内容。


18.vue-loader是什么?使用它的用途有哪些?

    vue-loader是解析.vue文件的一个加载器。

    用途:js可以写es6、style样式可以scss或less、template可以加jade等


19.scss是什么?在vue.cli中的安装使用步骤是?有哪几大特性?
    答:scss是css的预编译。
    使用步骤:
        第一步:先装css-loader、node-loader、sass-loader等加载器模块
        第二步:在build目录找到webpack.base.config.js,在那个extends属性中加一个拓展.scss
        第三步:在同一个文件,配置一个module属性
        第四步:然后在组件的style标签加上lang属性 ,例如:lang=”scss”
    特性:
        可以用变量,例如($变量名称=值); 
        可以用混合器,例如() 
        可以嵌套



【本页面将持续更新...欢迎收藏本页面】


温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!

已有 0/1235 人参与

微信扫码关注鹏仔哥微信