Vue常问面试题2022(每天记十个肝货)

目录

1.Vue的优点

2.什么是MVVM框架?它适用于哪些场景?

3.Vue.js中标签如何绑定事件?

4.如何定义Vue-router的动态路由?

5.如何获取传过来的动态参数?

6.Vuex是什么?如何使用?在哪种功能场景中使用它?

7.如何实现自定义指令?它有哪些钩子钩子函数?还有哪些钩子函数参数?

8.至少说出Vue.js中的四种指令和她们的用法

9.导航钩子有哪些?她们有哪些参数

10.请详细说明你对Vue.js生命周期的理解


 Vue的优点

  • 轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十kb;
  • 简单易学:国人开发,中文文档,不存在语言障碍,易于理解和学习;
  • 双向数据绑定:保留了angular的特点,在数据操作方面更为简单;
  • 组件化:保留了react的优点,实现HTML的封装和重用,在构建单页面应用方面有着独特的优势;
  • 视图,数据,结构分离:使数据的更改更为简单,不需要进行逻辑代码的修改,只需要操作数据就能完成相关操作;
  • 虚拟dom:dom操作时非常消耗性能的,不再使用原生的dom操作节点,极大的解放dom操作,但具体操作还是dom不过是换了另一种方式;
  • 运行速度更快:相比较于react而言,同样是操作虚拟dom,就性能而言,vue存在很大的优势。

  什么是MVVM框架?它适用于哪些场景?

  • MVVM框架是一个Model-View-View Model框架,其中ViewModel连接模型(Model)和视图(View);
  • 在数据操作比较多的场景中,MVVM框架更适合,有助于通过操作数据渲染页面。

  Vue.js中标签如何绑定事件?

    绑定事件有两种方式

  1.   通过v-on指令,<input v-on:click=doLog()/>。
  2.   通过@语法糖,<input @click=doLog()/>。

  如何定义Vue-router的动态路由?

      在静态路由名称前面添加冒号,例如,:to=”{path:ph}”。

  如何获取传过来的动态参数?

    在组件中,使用$router对象的 query.id,即 $route. query.id 。

  Vuex是什么?如何使用?在哪种功能场景中使用它?

  • vuex是针对 Vue. js框架实现的状态管理系统。

  • 为了使用vuex,要引入 store,并注入Vue.js组件中,在组件内部即可通过$ ostore访问 store对象。

  • 使用场景包括:在单页应用中,用于组件之间的通信,例如音乐播放、登录状态管理、加入购物车等。

如何实现自定义指令?它有哪些钩子钩子函数?还有哪些钩子函数参数?

自定义指令包括以下两种:

  • 全局自定义指令:vue.js对象提供了 directive方法,可以用来自定义指令。directive方法接受两个参数,一个是指令名称,另一个是函数。

  • 局部自定义指令:通过组件的 directives属性定义。

它有如下钩子函数。

  •  bind:在指令第一次绑定到元素时调用。
  • inserted:在被绑定元素插入父节点时调用(Vue2.0新增的)。

  • update:在所在组件的 VNode更新时调用。

  • componentUpdated:在指令所在组件的 VNode及其子 VNode全部更新后调用(Vue2.0新增的)。

  • unbind:只调用一次,在指令与元素解除绑定时调用。

 钩子函数的参数如下。

  • el:指令所绑定的元素。

  • binding:指令对象。

  • vnode:虚拟节点。

  • oldVnode:上一个虚拟节点。

 至少说出Vue.js中的四种指令和她们的用法

  • v-if:判断对象是否隐藏。

  • v-for:循环渲染。

  • v-bind:绑定一个属性。

  • v- model:实现数据双向绑定。

 导航钩子有哪些?她们有哪些参数

   导航钩子又称导航守卫,又分为全局钩子、单个路由独享钧子和组件级钧子。

  •  全局钩子有 beforeEach、beforeResolve(Vue2.5.0新增的)、 afterEach。

    单个路由独享钩子有 beforeEnter。

  • 单个路由独享钩子有 beforeEnter。

  • 组件级钩子有 beforeRouteEnter、 beforeRouteUpdate(Vue2.2新增的) beforeRouteLeave。

   它们有以下参数

  • to:即将要进入的目标路由对象。

  • from:当前导航正要离开的路由。

  • next:一定要用这个函数才能到达下一个路由,如果不用就会遭到拦截。

请详细说明你对Vue.js生命周期的理解。

总共分为8个阶段,分别为 beforeCreate、created、beforeMount、 mounted、beforeUpdate、 updated、 beforeDestroyed、 destroyed。

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

  • beforeMount:在挂载开始之前调用,相关的 render函数首次调用。

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

  • beforeUpdate:在数据更新时调用,发生在虛拟DOM重新渲染和打补丁之前。

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

  • beforeDestroy:在实例销毁之前调用。在这一步,实例仍然完全可用。

  • destroyed:在 Vue. js实例销毀后调用。调用后,Vue. js实例指示的所有东西都会解除绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

  当使用组件的kep- alive功能时,增加以下两个周期。

  • activated在keep- alive组件激活时调用;

  • deactivated在keep-live组件停用时调用。

  Vue2.5.0版本新增了一个周期钩子:ErrorCaptured,当捕获一个来自子孙组件的错误时调用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值