当前位置: 代码迷 >> 综合 >> vue面试技术点整合
  详细解决方案

vue面试技术点整合

热度:67   发布时间:2024-02-04 13:04:29.0

谈谈你对vue.js框架的理解

MVVM:

MVVM是是Model-View-ViewModel的简写。即模型-视图-视图模型。

vue全家桶(vue/cli+vue-router+vuex)

vue-router:<router-link>和<router-view>和<keep-alive>

$route和 $router的区别是什么?

  • router为VueRouter的实例,是一个全局路由对象,包含了路由跳转的方法、钩子函数等。
  • route 是路由信息对象||跳转的路由对象,每一个路由都会有一个route对象,是一个局部对象,包含path,params,hash,query,fullPath,matched,name等路由信息参数。

vue-router的两种模式

  • hash 原理是onhashchage事件,可以在window对象上监听这个事件
  • history:利用了HTML5 History Interface 中新增的pushState()和replaceState()方法。需要后台配置支持。如果刷新时,服务器没有响应响应的资源,会刷出404,

路由动态传参:

路由地址后接         :参数,    参数会被this.$route.params接收

vue-router实现路由懒加载(动态加载路由):

const router = new VueRouter({ routes: [ { path: '/home', name: 'Home', component:() = import('../views/home') } ] })

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

  • 全局前置守卫:
    •  to:Route,代表要进入的目标,它是一个路由对象。

    • from:Route,代表当前正要离开的路由,也是一个路由对象

    • next:Function,必须需要调用的方法,具体的执行效果则依赖next方法调用的参数

      • next():进入管道中的下一个钩子,如果全部的钩子执行完了,则导航的状态就是comfirmed(确认的)
      • next(false):终端当前的导航。如浏览器URL改变,那么URL会充值到from路由对应的地址。
      • next(’/’)||next({path:’/’}):跳转到一个不同的地址。当前导航终端,执行新的导航。

* next 方法必须调用,否则钩子函数无法resolved

  • 后置钩子并没有next函数,也不会改变导航本身。

  • 路由独享钩子
    • beforEnter
  • 组件内导航钩子
    • beforeRouterEnter不能访问this,因为守卫在导航确认前被调用,因此新组建还没有被创建,可以通过传一个回调给 next 来访问组件实例。在导航被确认的时候执行回调,并把实例作为回调的方法参数。

Vuex:状态管理模式

  • state,驱动应用的数据源;
  • view,以声明方式将 state 映射到视图;
  • actions,响应在 view 上的用户输入导致的状态变化。

五个核心方法:

  • state(基本数据)、
  • getters(从基本数据派生的数据)、
  • mutations(提交更改数据的方法,同步)、
  • actions(像一个装饰器,包裹mutations,使之可以异步)、
  • modules(模块化Vue)

双向绑定即响应式原理:

Vue响应式底层实现方法是 Object.defineProperty() (vue3.0改成proxy)方法,该方法中存在一个getter和setter的可选项,可以对属性值的获取和设置造成影响

Vue中编写了一个wather来处理数据

在使用getter方法时,总会通知wather实例对view层渲染页面
同样的,在使用setter方法时,总会在变更值的同时,通知wather实例对view层进行更新

vue通信的几种方式

  • props和$emit
  • $parent 和 $children (另有:$root:获取根实例)
  • provide / inject
  • ref / refs
  • vuex(状态管理器)
  • localstorage和sessionStorage

虚拟dom(diff运算):

     用js对象结构表示DOM树的结构,形成真正的DOM树,当文档变更时,重新构造一棵DOM树,然后进行比较,记录差异,           把差异放在真正的DOM树上,更新真正的DOM树
作用:速度快,减小了页面渲染过程的次数

 

 

 

 

  相关解决方案