最近在看前端面试题,发现都写的很对(废话一句),但是对于我这样平时敲业务代码用不上,只有面试的时候才临时抱佛脚不太友好,要记住的东西太多,所以我就精简出自己的一份,仅供自己参考。
vue:
vue双向绑定原理:
vue数据双向绑定是通过数据劫持,通过Object.defineProperty()来实现数据劫持结合发布者-订阅者模式的方式来实现的。
vue生命周期:创建前,创建后,dom节点创建前创建后,dom节点更新前,更新后,模块销毁前,销毁后。
vue父子组件生命周期:
dom节点:
父创建前 子创建前 子创建后 父创建后
更新:
父更新前 子更新前 自更新后 父更新后
销毁:
父销毁前 子销毁前 子销毁后 父销毁后
vue实例:
vue中带$的大部分都是vue实例,例如:$el,$set,$emit等
vue指令:
v-model,v-if,v-for,v-show,v-for等等,注意v-if和v-show的区别
watch和计算属性:
watch和计算属性最大的区别就是计算属性是有缓存的,而且计算属性里面只能使用同步而不能使用异步
路由:
路由分为hash和history,最直观的区别就是在地址栏中带有#,而history则没有带#;
history模式下如果页面刷新而后端没有准备的话会出现404页面,此时需要后端配合做页面重定向。
其他:
浏览器加载html过程:
1.解析HTML文件,创建DOM树
2.解析CSS,形成CSS对象模型
3.计算层级
4.将CSS与DOM合并,构建渲染树(renderingtree)
5.布局和绘制
webpack:
webpack主要就是entry,output,loader,plugin,因为webpack只能识别js文件,所以需要loader将其他文件转化为js文件供webpack识别。
常用的loader有:css-loader,html-loader,file-loader,url-loader...等等
es6:
es6新特性:箭头函数(箭头函数的this在创建的时候就确定好了,指向本身切不可修改),class,premise等等
premise:
主要有三个状态:成功,失败,处理中。
在promise原型中有then,catch方法,这两种方法可以做链式调用。
all方法用于将多个实例包装成一个实例,当异步操作执行完后再来执行all方法。
每一个对象都有prototype属性和_proto_属性,两者都是一致的,前者可修改,后者不可修改,对象中的原型一层层的向父级追溯形成的链,就叫原型链。(我实在搞不清原型和原型链,这里是我自己理解的)