本文主要是介绍面试经典问题(1),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
面试经典问题(1)
1.请简述一下mvvm框架是什么?它和jquery的区别是什么?
MVVM 全称 Model-View-ViewModel
- MVVM开发模式可以让我们更关注处理业务逻辑,不必像
jquery
去操作dom
对象 - 目前流行mvvm框架有vue,angular等
- 实现思想: 数据绑定,视图刷新 (数据双向绑定,数据驱动视图)
- 主要目的:分离视图(view)和模型(model)
- View可以独立于Model变化和修改
- 一个
ViewModel
可以绑定到不同的View上 - 在mvvm中,数据是核心
- 操作viewmodel中的数据,会同步到dom
- dom事件监控用户对dom的改动,也会同步到viewmodel
2.前端路由的实现方式
本质:
监听url的变化,匹配路由规则,显示相应的页面,无需刷新
实现方式
目前单页面使用路由的规则有两种实现方式
1) hash模式:
- hash路由有一个明显的标识,就是使用hash模式下,url路径中会带有
#号
. - hash优势就是兼容性很好呀,在ie里的老版本中都能运行
- hash缺点就是url存在
#号
,不够美观
2) history模式
- history模式让路由更加美观
3.什么是虚拟dom,解决了什么问题
加载html文档后,解析文档并构建dom树
css解析生成cssom树
dom树和cssom树结合 ==RenderObject树
然后将renderobject树渲染成页面
这个过程存在于渲染引擎当中
渲染引擎跟js引擎是分开的,为了方便js操作dom,渲染引擎会暴露一些接口给js调用
由于两者分开,通讯是需要代价的,js操作渲染引擎暴露出来的接口,性能消耗太大,因此减少dom操作会大大提高我们的性能
虚拟dom干了什么??
- 虚拟dom直接用javascript实现dom树(大致上)
- 组件的html结构不会直接生成dom,而是映射生成虚拟的
javascript dom结构
- 又通过这个虚拟dom上实现了一个diff算法,找出最小的变更,然后把这些变更写到实际的dom当中
- 这个虚拟dom以js的形式存在,计算性能提高
- 减少了实际dom操作次数,性能得到提升
4.vue的生命周期
8个阶段
创建前/创建后 beforeCreate/created
载入前/载入后 beforeMount/mounted
更新前/更新后 beforeUpdate/updated
销毁前/销毁后 beforeDestroy/destroyed
- beforeCreate阶段,vue实例挂载的元素el还没有
- beforemount阶段,vue实例的$el和data初始化
- mounted阶段,vue实例挂载完成,data.message成功渲染
- data变化时,触发beforeUpdate和updated方法
- destroy后vue解除事件监听和dom绑定,dom结构依然存在
这篇关于面试经典问题(1)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!