欢迎光临散文网 会员登陆 & 注册

千锋教育web前端高频面试题视频教程,kerwin大话前端面试秘籍(附答案)

2023-07-16 13:27 作者:我是阿光行了吧  | 我要投稿

单向数据流:

对于 vue 来说,组件之间的数据传递具有单向数据流这样的特性的,称为单向数据流

两个数据流之间相互独立,单向数据流指 只能从一个方向来修改状态

例:父子传值,父组件给子组件传递数据,子组件想给父组件传递数据的话,需要通过绑定事件,让父组件自己修改值,然后再将修改后的值传给子组件

双向数据绑定:

模型到视图,绑定input框的value属性

视图到模型:绑定input事件,通过视图改变数据

Object.defineProperty 的劣势:

1、无法监听es6的Set、Map变化

2、无法监听class类型的数据

3、属性的新加或者删除也无法监听

4、数组元素的增加或删除也无法监听

MVC:

把业务逻辑分离,模块化程度高,但由于View是强依赖特定的Model的,所以View无法组件化,无法复用

MVP:

View不依赖Model,View可以进行组件化,但Model-> View的手动同步逻辑 ,麻烦、维护困难

MVVM:

解决了MVP大量的手动View和Model同步的问题,提供双向数据机制,提高了代码的可维护性问题,对于大型的图形应用程序,视图状态较多,ViewModel的构建和维护的成本都会比较高

生命周期:

vue2:

初始阶段:beforeCreate、created、beforeMount、mounted

更新阶段:beforeUpdate、updated

销毁阶段:beforeDestroy、destroyed

vue3:

初始阶段:setup、onBeforeMount、onMounted

更新阶段:onBeforeUpdate、onUpdated

销毁阶段:onBeforeUnmount、onUnmounted

常用的钩子:

发送请求:create、mounted

销毁定时器、清除绑定事件:beforeDestroy

vue的响应式原理:

vue的响应式主要是利用了Object.defineProperty的方法里面的setter、getter方法的观察者模式来实现。一旦属性发生了改变,我们的setter方法通知调用我们的watcher,watcher的话调用我们的render函数,render函数生成我们新的虚拟dom,虚拟dom对比老的虚拟dom发现有区别,通过最小的代价更新我们的dom节点,实现页面的更新操作。

Proxy 和 Object.defineProperty 优劣对比:

proxy的优势:

proxy 可以直接监听对象而非属性,可以直接监听数组的变化

proxy 有多达13中拦截方法,不限于 apply、ownKeys、deleteProperty、has 等是 Object.defineProperty 不具备的

proxy 返回的是一个新的对象,我们可以只操作新的对象达到目的,而 Object.defineProperty 只能遍历对象属性直接修改

Object.defineProperty 的优势:

兼容性好,支持IE9,而proxy存在浏览器兼容性问题,而且无法使用polyfill来弥补

兼容性问题:如果低版本不支持 proxy 的话,走的还 Object.defineProperty

Composition API :

1、在 Composition API 中根据逻辑相关组织代码,提高可读性和可维护性,类似react中的hook

2、更好的重用逻辑,在 option API 中通过Mixins重用逻辑代码,容易发生命名冲突且关系不清

3、解决在生命周期函数经常包含不相关的逻辑,但又不得不把相关的逻辑分离到几个不同的方法中的问题

例:

在mounted设置定时器,但需要在destroyed中来清除定时器,将同一功能的代码拆分到不同的位置,造成后期代码维护困难

jQuery 和 vue 的区别:

jQuery 专注视图层,通过直接操作dom去实现页面的一些逻辑渲染

vue 专注于数据层,通过数据的双向绑定,最终表现在dom层,减少dom操作,vue使用组件化思想,提高开发效率,方便重复利用,便于协同开发

vue单文件组件定义全局css:

默认为全局 css 样式

独享样式:在style标签加上 scoped 属性,它是通过给标签 添加自定义属性实现,通过内容得到不同的哈希值,是标签唯一

$root、$parent、$refs:

$root、$parent,都能访问父组件的属性和方法,区别在于如果存在多级子组件,通过parent 访问得到的是他最近一级的父组件,通过root访问得到的是根父组件。通过在子组件标签定义 ref 属性,在父组件中可以使用$refs访问子组件实例

ref:

定义模型,获取dom节点,获取子组件实例,关联form表单

vue中的自定义指令:

通过directive来自定义指令,自定义指令分为全局抬令和局部指令,自定义指令也有几个的钩子函数,常用的有bind和update,当 bind 和 update 时触发相同行为,而不关心其它的钩子时可以简写。

Vue.directive('focus', {
 inserted: (el) => {
  el.focus
 }
})
......
<input v-focus />



千锋教育web前端高频面试题视频教程,kerwin大话前端面试秘籍(附答案)的评论 (共 条)

分享到微博请遵守国家法律