如果能帮到你,点个赞吧,务必熟知的vuejs面试题「务必收藏」

vuejs 基础必备

1、active-class 是哪个组件的属性?嵌套路由怎么定义

  (1)、active-class 是 vue-router 模块的 router-link 组件的属性
  (2)、使用 children 定义嵌套路由

2、怎么定义 vue-router 的动态路由? 怎么获取传过来的值

  在 router 目录下的 index.js 文件中,对 path 属性加上 /:id。

  使用 router 对象的 params.id 获取

3、vue-router 有哪几种导航钩子?

  三种,

  (1)、全局导航钩子

    router.beforeEach(to, from, next),

    router.beforeResolve(to, from, next),

    router.afterEach(to, from ,next)

  (2)、组件内钩子
    
    beforeRouteEnter, beforeRouteUpdate, beforeRouteLeave

  (3)、单独路由独享组件

    beforeEnter

4、v-model 是什么?怎么使用? vue中标签怎么绑定事件

  v-model 可以实现双向绑定,

  绑定事件:<input @click="rdhub.cn" />

5、axios 是什么?怎么使用?描述使用它实现登录功能的流程

  axios 是请求后台资源的模块。 npm i axios -S

  如果发送的是跨域请求,需在配置文件中 config/index.js 进行配置

6、vuex 是什么?怎么使用?哪种功能场景使用它

  vuex 是专门为 vue 开发的数据状态管理模式。组件之间数据状态共享

  使用场景:音乐播放、登录状态、购物车


// 新建 store.js
import vue from 'vue'
import vuex form 'vuex'
vue.use(vuex)
export default new vuex.store({
//...rdhub.cn
}) //main.js
import store from './store'
...

7、mvvm 框架是什么?它和其他框架(jquery) 的区别是什么?哪些场景适合

  mvvm 是 model + view + viewmodel 框架,通过 viewmodel 连接数据模型model 和 view

  区别:vue 是数据驱动,通过数据来显示视图层而不是节点操用

  场景:数据操作比较多的场景,更加快捷

8、自定义指令(v-check, v-focus) 的方法有哪些? 它有哪些钩子函数? 还有哪些钩子函数参数

  全局定义指令:在 vue 对象的 directive 方法里面有两个参数, 一个是指令名称, 另一个是函数。

  组件内定义指令:directives

  钩子函数: bind(绑定事件出发)、inserted(节点插入时候触发)、update(组件内相关更新)

  钩子函数参数: el、binding

9、说出至少 4 种 vue 当中的指令和它的用法

  v-if(判断是否隐藏)、v-for(把数据遍历出来)、v-bind(绑定属性)、v-model(实现双向绑定)

10、vue-router 是什么?它有哪些组件

  vue-router 是 vue 的路由插件,

  组件:router-link router-view

11、vue 的双向绑定的原理是什么

  vue.js 是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。

  具体步骤:

  第一步:需要 observe 的数据对象进行递归遍历,包括子属性对象的属性,都加上 setter 和 getter
这样的话,给这个对象的某个值赋值,就会触发setter,那么就能监听到了数据变化

  第二步:compile解析模板指令,将模板中的变量替换成数据,然后初始化渲染页面视图,并将每个指令对应的节点绑定更新函数,添加监听数据的订阅者,一旦数据有变动,收到通知,更新视图

  第三步:Watcher订阅者是Observer和Compile之间通信的桥梁,主要做的事情是:

  1、在自身实例化时往属性订阅器(dep)里面添加自己

  2、自身必须有一个update()方法

  3、待属性变动dep.notice()通知时,能调用自身的 update() 方法,并触发Compile中绑定的回调,则功成身退。

  第四步:MVVM作为数据绑定的入口,整合Observer、Compile和Watcher三者,通过Observer来监听自己的model数据变化,通过Compile来解析编译模板指令,最终利用Watcher搭起Observer和Compile之间的通信桥梁,达到数据变化 -> 视图更新;视图交互变化(input) -> 数据model变更的双向绑定效果。

12、请详细说下你对vue生命周期的理解

  总共分为8个阶段创建前/后,载入前/后,更新前/后,销毁前/后。

  创建前/后

  在beforeCreated阶段,vue实例的挂载元素$el和数据对象data都为undefined,还未初始化。

  在created阶段,vue实例的数据对象data有了,$el还没有。

  载入前/后

  在beforeMount阶段,vue实例的$el和data都初始化了,但还是挂载之前为虚拟的dom节点,data.message还未替换。

  在mounted阶段,vue实例挂载完成,data.message成功渲染。

  更新前/后

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

  销毁前/后

  在执行destroy方法后,对data的改变不会再触发周期函数,说明此时vue实例已经解除了事件监听以及和dom的绑定,但是dom结构依然存在

vuex 面试题

1、有哪几种属性

  有 5 种,分别是 state、getter、mutation、action、module

2、vuex 的 store 特性是什么

  (1) vuex 就是一个仓库,仓库里放了很多对象。其中 state 就是数据源存放地,对应于一般 vue 对象里面的 data

  (2) state 里面存放的数据是响应式的,vue 组件从 store 读取数据,若是 store 中的数据发生改变,依赖这相数据的组件也会发生更新

  (3) 它通过 mapState 把全局的 state 和 getters 映射到当前组件的 computed 计算属性

3、 vuex 的 getter 特性是什么

  (1) getter 可以对 state 进行计算操作,它就是 store 的计算属性

  (2) 虽然在组件内也可以做计算属性,但是 getters 可以在多给件之间复用

  (3) 如果一个状态只在一个组件内使用,是可以不用 getters

4、vuex 的 mutation 特性是什么

  action 类似于 muation, 不同在于:action 提交的是 mutation,而不是直接变更状态

  action 可以包含任意异步操作

5、vue 中 ajax 请求代码应该写在组件的methods中还是vuex 的action中

  如果请求来的数据不是要被其他组件公用,仅仅在请求的组件内使用,就不需要放入 vuex 的 state 里

  如果被其他地方复用,请将请求放入 action 里,方便复用,并包装成 promise 返回

5、不用 vuex 会带来什么问题

  可维护性会下降,你要修改数据,你得维护3个地方

  可读性下降,因为一个组件里的数据,你根本就看不出来是从哪里来的

  增加耦合,大量的上传派发,会让耦合性大大的增加,本来Vue用Component就是为了减少耦合,现在这么用,和组件化的初衷相背

生命周期面试题

1、什么是 vue 生命周期

  vue 实例从创建到销毁的过程就是生命周期。

  也就是从开始创建、初始化数据、编译模板、挂在 dom -> 渲染、更新 -> 渲染、写在等一系列过程

2、vue生命周期的作用是什么

  生命周期中有多个事件钩子,让我们在控制整个 vue 实例的过程时更容易形成好的逻辑

3、vue生命周期总共有几个阶段

  8个阶段:创建前/后、载入前/后、更新前/后、销毁前/后

4、第一次页面加载会触发哪几个钩子

  第一次加载会触发 beforeCreate、created、beforeMount、mounted

5、DOM 渲染在哪个周期中就已经完成

  mounted

6、简述每个周期具体适合哪些场景

  生命周期钩子的一些使用方法:

  beforecreate : 可以在这加个loading事件,在加载实例时触发

  created : 初始化完成时的事件写在这里,如在这结束loading事件,异步请求也适宜在这里调用

  mounted : 挂载元素,获取到DOM节点 updated : 如果对数据统一处理,在这里写上相应函数

  beforeDestroy : 可以做一个确认停止事件的确认框 nextTick : 更新数据后立即操作dom
![image.png | left | 300x390]

关于

![在这里插入图片描述](https://img-blog.csdnimg.cn/20181216153752412.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDA5MjExMw==,size_16,color_FFFFFF,t_70)

来源:https://segmentfault.com/a/1190000016770732

【vuejs面试题】务必熟知的vuejs面试题「务必收藏」的更多相关文章

  1. 「建议心心」要就来15道多线程面试题一次爽到底(1.1w字用心整理)

    . 本文是给**「建议收藏」200MB大厂面试文档,整理总结2020年最强面试题库「CoreJava篇」**写的答案,所有相关文章已经收录在码云仓库:https://gitee.com/bingqil ...

  2. java面试题—精选30道Java笔试题解答(二)

    摘要: java面试题-精选30道Java笔试题解答(二) 19. 下面程序能正常运行吗() public class NULL { public static void haha(){ System ...

  3. C语言面试题大汇总之华为面试题 Eddy整理

    1.局部变量能否和全局变量重名? 答:能,局部会屏蔽全局.要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局 ...

  4. 「PKUWC2018/PKUSC2018」试题选做

    「PKUWC2018/PKUSC2018」试题选做 最近还没想好报THUSC还是PKUSC,THU发我的三类约(再来一瓶)不知道要不要用,甚至不知道营还办不办,协议还有没有用.所以这些事情就暂时先不管 ...

  5. php开发面试题---2、php常用面试题二(表单提交方式中的get和post有什么区别)

    php开发面试题---2.php常用面试题二(表单提交方式中的get和post有什么区别) 一.总结 一句话总结: 数据位置:get参数在url里面,post在主体里面 数据大小:get几kb,pos ...

  6. php开发面试题---1、php常用面试题一(PHP有哪些特性)

    php开发面试题---1.php常用面试题一(PHP有哪些特性) 一.总结 一句话总结: ①.混合语法:php独特混合了C,Java,Prel以及PHP自创的语法. ②.为动态网页而生:可以比CGI或 ...

  7. 【web前端面试题整理02】前端面试题第二弹袭来,接招!

    前言 今天本来准备先了解下node.js的,但是,看看我们一个小时前与一个小时后的差距: 既然如此,我们继续来搜集我们的前端面试题大业吧!!! 特别感谢玉面小肥鱼提供哟,@玉面小飞鱼 题目一览 Jav ...

  8. 京东android面试题(2018 顶级互联网公司面试题系列)

    以下来自于北京的一个兄弟的面试题 1.静态内部类和非静态内部类有什么区别  2.谈谈你对java多态的理解  3.如何开启线程,run和runnable有什么区别  4.线程池的好处  5.说一下你知 ...

  9. 大意了,这几道Python面试题没有答对,Python面试题No13

    第1题: Python如何爬取 HTTPS 网站? 这类问题属于简单类问题 在使用 requests 前加入:requests.packages.urllib3.disable_warnings(). ...

随机推荐

  1. BZOJ 3193: [JLOI2013]地形生成 计数 + 组合 + 动态规划

    第一问: 先不考虑山的高度有相同的:直接按照高度降序排序,试着将每一座山插入到前面山的缝隙中. 当然,这并不代表这些山的相对位置是固定的,因为后面高度更低的山是有机会插入进来的,所以就可以做到将所有情 ...

  2. ubuntu 安装 tar.gz 文件

    ubuntu 安装 tar.gz 文件 本文链接:https://blog.csdn.net/caloriesung/article/details/81536144 tar zxvf FileNam ...

  3. Python3学习笔记(九):赋值,浅拷贝和深拷贝区别

    一.变量赋值 在Python可变数据类型(列表,字典,集合)中,把一个可变数据类型的变量赋给另一个变量,这两个变量引用的是同一个对象,内存地址是一样的,修改当中的一个变量,另一个变量相应也会被修改 & ...

  4. (转载)Kaggle_Titanic生存预测 -- 详细流程吐血梳理

    Kaggle_Titanic生存预测 -- 详细流程吐血梳理 https://blog.csdn.net/Koala_Tree/article/details/78725881 Kaggle中Tita ...

  5. Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?

    if first time to install docker, be noted the docker engine started as root copied from: http://blog ...

  6. JSP 不能解析EL表达式的解决办法

    原文地址:http://www.jb51.net/article/30791.htm 原因是:在默认情况下,Servlet 2.4 / JSP 2.0支持 EL 表达式. 解决的办法有两种: 1.修改 ...

  7. 使用SharpZIpLib写的压缩解压操作类

    使用SharpZIpLib写的压缩解压操作类,已测试. public class ZipHelper { /// <summary> /// 压缩文件 /// </summary&g ...

  8. VLC2.2.4命令参数

    用法: vlc [选项] [流] ...您可以在命令行中指定多个流.它们将被加入播放列表队列.指定的首个项目将被首先播放. 选项样式: --选项 用于设置程序执行期间的全局选项. -选项 单字母版本的 ...

  9. IDEA 中常用快捷键的使用

    IDEA 中快捷键的使用 1:知道类名全局查找类:   Ctrl+Shift+Alt+N;      全局搜索: Ctrl+Shift+R 2:快速定位到类的文件夹: 3:  优化导入的类和包 (删除 ...

  10. 双三次插值C代码(利用opencv)

    双三次插值C代码(利用opencv) phasecubic2.cpp D:\文件及下载相关\文档\Visual Studio 2010\Projects\phasecubic2\phasecubic2 ...