没有合适的资源?快使用搜索试试~ 我知道了~
20230404经典vue面试题
资源推荐
资源详情
资源评论
一、谈谈你对 MVVM 的理解?
映射关系简化,隐藏 controller MVVM 在 MVC 的基础上,把控制层
隐藏掉了。
Vue 不是一个 MVVM 框架,它是一个视图层框架。
ViewModal 是一个桥梁,将数据和视图进行关联。
二、谈谈你对 Vue 中响应式数据的理解?
数组和对象类型的值变化的时候,通过 defineReactive 方法,借助了
defineProperty,将所有的属性添加了 getter 和 setter。用户在取值和设置的
时候,可以进行一些操作。
缺陷:只能监控最外层的属性,如果是多层的,就要进行全量递归。
get 里面会做依赖搜集(dep[watcher, watcher]) set 里面会做数据
更新(notify,通知 watcher 更新)
三、Vue 中如何检测数组的变化?
vue 中对数组没有进行 defineProperty,而是重写了数组的 7 个方法。
分别是:
� push
� shift
� pop
� splice
� unshift
� sort
� reverse
因为这些方法都会改变数组本身。
数组里的索引和长度是无法被监控的。
四、Vue 中如何进行依赖收集的?
Vue 初始化的时候,挂载之后会进行编译。生成 renderFunction。
当取值的时候,就会搜集 watcher,放到 dep 里面。
当用户更改值的时候,就会通知 watcher,去更新视图。
五、如何理解 Vue 中的模板编译原理?
这个问题的核心是如何将 template 转换成 render 函数。
. 将 template 模块转换成 ast 语法书 - parserHTML
. 对静态语法做标记(某些节点不改变)
. 重新生成代码 - codeGen,使用 with 语法包裹字符串
六、Vue 生命周期钩子是如何实现的?
Vue 的生命周期钩子是回调函数,当创建组件实例的过程中会调用相应
的钩子方法。 内部会对钩子进行处理,将钩子函数维护成数组的形式。
七、Vue 组件生命周期有哪些?
� beforeCreate 在实例初始化之后,数据观测observer 和event、
watcher 事件配置之前被调用
� created 实例已经创建完成,在这一步,以下配置被完成
� 数据观测
� 属性和方法的运算
� watch/event 时间回调
� $el 尚未生成
� beforeMount 在挂载之前被调用,render 尚未被调用
� mounted el 被新创建的 vm.$el 替换,并挂载到实例上去之后调
用
� beforeUpdate 数据更新时,被调用,发生在虚拟 Dom 重新渲
染和打补丁之前
� update 由于数据更改导致的虚拟 Dom 重新渲染和打补丁,在
这之后调用
� beforeDestroy 实例销毁之前调用
� destroyed 实例销毁之后调用,调用后 Vue 实例的所有东西都
会被解绑,所有的事件监听会被移除,子实例被销毁,该钩子在服务端
渲染期间不被调用
� keep-alive(activated & deactivated)
八、vue.mixin 的使用场景和原理?
Vue 的 mixin 的作用就是抽离公共的业务逻辑,原理类似对象的继承,
当组件初始化的时候,会调用 mergeOptions 方法进行合并,采用策
略模式针对不同的属性进行合并。 如果混入的数据和本身组件的数据
有冲突,采用本身的数据为准。
缺点:命名冲突、数据来源不清晰
九、Vue 的组件 data 为什么必须是一个函数?
new Vue 是一个单例模式,不会有任何的合并操作,所以根实例不必校验
剩余28页未读,继续阅读
资源评论
eq0284
- 粉丝: 340
- 资源: 40
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功