面试题整理
vue
vue响应式原理
- 通过Object.defineProperty()方法进行数据劫持
- 将数据(data)设置为getter和setter的访问形式
- 在object.defineProperty()的get属性中添加观察者(watcher),在set更改属性的时候去触发notify()来调用upDate方法更新视图
computed 、watch 和 filters
- computed:计算属性,依赖其他属性,当其他属性改变的时候下一次获取computed值时也会改变,computed的值会有缓存。一般是需要针对多个数据进行操作
- filters:过滤器,帮助我们过滤请求。一般用于数据格式化
- watch:类似于数据改变后的回调,一般用于监听改变,如果想深度监听的话后面加一个deep:true,如果想监听之后立即执行的话需要加上immediate:true。
- filters与computed
- 相同点:都必须有返回值,且可以绑定数据
- 不同点:filters可以传参,但是不可以访问this,可以多个过滤。只有过滤器传参改变就会触发,不存在缓存;computed不可以传参,可以访问this,针对的是一个变量的操作。当其中的数据改变就会触发,存在缓存。
路由的三种模式
- hash:哈希模式,使用URL的hash来模拟一个完整的URL,当URL发生改变时,页面不会重新加载,其显示的网络路径中会有#号,这是最安全的模式,因为他兼容所有的浏览器和服务器。
- history:历史模式,美化后的hash模式,会去掉路径中的 “#”。依赖于Html5 的history,pushState API,所以要担心IE9以及一下的版本,感觉不用担心。并且还包括back、forward、go三个方法,对应浏览器的前进,后退,跳转操作。就是浏览器左上角的前进、后退等按钮进行的操作。
- absarct:abstract 是vue路由中的第三种模式,本身是用来在不支持浏览器API的环境中,充当fallback,而不论是hash还是history模式都会对浏览器上的url产生作用,本文要实现的功能就是在已存在的路由页面中内嵌其他的路由页面,而保持在浏览器当中依旧显示当前页面的路由path,这就利用到了abstract这种与浏览器分离的路由模式。
防抖节流函数
- 防抖函数:防抖函数相当于是对触发的数据做一个延迟处理。在触发事件后,在 n 秒后只能执行一次,如果在 n 秒内又触发了事件,则会重新计算函数的执行时间。比如我们平时在使用搜索框时,在我们输入期间不发送网络请求,当我们输入完成后再发送网络请求。
- 节流函数:节流函数相当于是我们在一个时间段内一直频繁的触发数据请求,但是数据的请求还是根据设定的一个频率来进行响应的。例如乘坐地铁,过闸机时,每个人进入后3秒后门关闭,等待下一个人进入。
路由的三种模式