首页 经验

前端面试vue题目(2)

时间: 2024-10-21 11:15:56

(部分内容来自网络,其真实性存疑,为了避免对您造成误导,请谨慎甄别。)

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

1.全局导航钩子:router.beforeEach(to,from,next)作用:跳转前进行判断拦截、组件内的钩子、单独路由独享组件

2、路由独享钩子可以在路由配置上直接定义 beforeEnter

3、组件内的导航钩子有三种:

beforeRouteEnter 在进入当前组件对应的路由前调用

beforeRouteUpdate 在当前路由改变,但是该组件被复用时调用

beforeRouteLeave 在离开当前组件对应的路由前调用=

9、Vue实例的生命周期讲一下, mounted阶段真实DOM存在了嘛?

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

也就是:开始创建->初始化数据->编译模板->挂载dom->数据更新重新渲染虚拟 dom->最后销毁。这一系列的过程就是vue的生命周期。所以在mounted阶段真实的DOM就已经存在了。

beforeCreate:vue实例的挂载元素el和数据对象data都还没有进行初始化,还是一个 undefined状态

created: 此时vue实例的数据对象data已经有了,可以访问里面的数据和方法, el还没有,也没有挂载dom

beforeMount: 在这里vue实例的元素el和数据对象都有了,只不过在挂载之前还是虚拟的dom节点

mounted: vue实例已经挂在到真实的dom上,可以通过对 dom操作来获取dom节点

beforeUpdate: 响应式数据更新时调用,发生在虚拟dom打补丁之前,适合在更新之前访问现有的 dom,比如手动移除已添加的事件监听器

updated: 虚拟dom重新渲染和打补丁之后调用,组成新的 dom已经更新,避免在这个钩子函数中操作数据,防止死循环。

activated: 当组件keep-alive激活时被调用

deactivated:当组件keep-alive停用时被调用

beforeDestroy: vue实例在销毁前调用,在这里还可以使用,通过this也能访问到实例,可以在这里对一些不用的定时器进行清除,解绑事件。

destroyed:vue实例销毁后调用,调用后所有事件监听器会被移除,所有的子实例都会被销毁。

11、vuex有哪几种属性,怎么使用?哪种功能场景使用它?

vuex是一个专门为vue.js开发的状态管理模式,每一个vuex应用核心就是store(仓库)。store基本上就是一个容器,它包含着你的应用中大部分的state(状态)

vuex的状态存储是响应式的,当 vue组件中store中读取状态时候,若store中的状态发生变化,那么相应的组件也会相应地得到高效更新。

改变store中的状态的唯一途径就是显示 commit(提交)mutation,这样使得我们可以方便地跟踪每一个状态的变化。

State: 定义了应用状态的数据结构,可以在这里设置默认的初始状态

Getter: 允许组件从Stroe中获取数据, mapGetters辅助函数仅仅是将store中的getter映射到计算属性。

Mutation: 唯一更改store中状态的方法,且必须是同步函数。

Action: 用于提交muatation, 而不是直接变更状态,可以包含任意异步操作。

Module: modules,可以让每一个模块拥有自己的state、mutation、action、getters,使得结构非常清晰,方便管理;如果所有的状态或者方法都写在一个store里面,将会变得非常臃肿,难以维护。

12、vuex中state存储的数据如果页面刷新此时数据还会有吗?(刷新之后销毁了)

13、v-bind和v-model的区别, v-model原理知道吗?

v-bind用来绑定数据和属性以及表达式

v-model使用在表单中,实现双向数据绑定的。

14、Vue中的常见指令有那些?

v-text/v-html/v-for/v-show/v-if/v-else/v-cloak/v-bind/v-on/v-model/v-slot…

15.改变this指向call、apply与bind区别:

前两个可以自动执行,bind不会自动执行,需要手动调用

call、bind与apply区别:前两个都有无数个参数,apply只有两个参数,而且第二个参数为数组

16,vue路由的两种模式

1.hash模式

特点:在url地址上有#号

实现的原理:原生的hasChange事件来实现,来监听hash值的变化

window.onhaschange=function(){}

刷新页面的时候:不会去发送请求,页面不会有任何问题,不需要后端来配合

2.history模式

特点:在url地址上没有#号,比较与hash模式看起来好看一些

实现的原理:利用的是history的api 来实现的 popState() 来实现的

刷新页面的时候:会去发送请求然后会导致页面出现找不到的情况,需要后端来配合解决

17,vue的响应式原理:

vue实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty() 数据劫持,来劫持各个属性的setter,getter,在数据更新时发布消息给订阅者,触发相应监听回调。

当把一个普通 Javascript 对象传给 Vue 实例来作为它的 data 选项时,Vue 将遍历它的属性,用 Object.defineProperty() 将它们转为 getter/setter。用户看不到 getter/setter,但是在内部它们让 Vue 追踪依赖,在属性被访问和修改时通知变化。

vue的数据双向绑定 将MVVM作为数据绑定的入口,整合Observer,Compile和Watcher三者,通过Observer来监听自己的model的数据变化,通过Compile来解析编译模板指令(vue中是用来解析 {{}}),

最终利用watcher搭起observer和Compile之间的通信桥梁,达到数据变化 —>视图更新;视图交互变化(input)—>数据model变更双向绑定效果。


上一个 rem的特点 文章列表 下一个 Vue和React的区别是什么?

最新

工具

© 2019-至今 适观科技

沪ICP备17002269号