用于自己对面试的总结,有问题欢迎指正,自己对于前端学习的太少,知识点理解模糊,有建议的同学希望能给予我指正和建议
1.组件设计
2.Vue源码
3.Vue原理
4.双向绑定原理
监听器Observer,订阅者Watcher
5.双向绑定用到的设计模式,其他的设计模式有了解吗
6.Javascript书籍,有看过吗?怎么看的?
7.虚拟dom优缺点
优点:dom具有批处理和高效率的Diff算法,最终表现在只是修改真实dom变更部分,可以保证高效的渲染,提高渲染性能
缺点:首次渲染大量dom时,会多一层虚拟dom计算,会比innerHTML计算慢一点
8.虚拟dom实现原理
1.内存中生成一棵虚拟dom树 2.将内存中的虚拟dom初始化其真实的dom 3.当我们修改vue实例中的data数据时候 4.将之前的虚拟dom结合新的数据,生成一条新的虚拟dom树 5.将此次生成好的虚拟dom树与上一次虚拟dom进行对比,通过diff算法进行对比的 6.将对比出来的差异的部分进行重新的真实dom的渲染
9.Vue性能优化
1.v-if 和 v-show 2.computed 和 watch 区分使用场景 3.v-for 遍历必须为 item 添加 key,且避免同时使用 v-if 4.不需要改变的数据,通过 Object.freeze 方法来冻结一个对象,一旦被冻结的对象就再也不能被修改了。 5.事件的销毁 6.图片资源懒加载 7.路由懒加载 8.第三方插件的按需引入 9.优化无限列表性能,使用插件来处理 10.服务端渲染 SSR or 预渲染 11.webpack优化,图片等静态资源压缩,es6转es5减少冗余代码,公共js,公共css 12.浏览器缓存 13.cdn的使用
10.无限列表
优化无限列表性能,使用插件来处理
11.Proxy和definePrototy的区别
Object.defineProperty只能劫持对象的属性,而 Proxy 是直接代理对象 bject.defineProperty对新增属性需要手动进行 Observe。
12.Vue组件通信方式
props和attrs和emit触发事件,bus.parent和$children vuex处理组件之间的数据交互
13.Vue使用场景
8个生命周期的使用
14.Created和mounted的区别?实际开发中区别?Created什么时候用到的
创建完成:已经完成了 初始化注册和响应 挂载之后:已完成HTML虚拟化,创建了el节点 可以操作DOM了
15.Vue自定义指令和自定义事件
自定义指令:Vue.directive('focus'),例子:初始化input聚焦 自定义事件:可用于父子组件传值
16.Keep-alive
keep-alive用于保存组件的渲染状态。
17.动态组件
按需加载组件,组件切换
18.This的指向,箭头函数指向
箭头函数本身没有this,通过继承获取this
19.浏览器缓存,区别,使用场景
Cookie,sessionStorage,localStorage,indexDB
20.Promise几个状态
Pending,resolved,rejected
21.Axios拦截器,封装会做什么