Vue面试精要:钩子函数、数据类型与渲染策略

需积分: 5 0 下载量 200 浏览量 更新于2024-08-04 收藏 97KB MD 举报
"面试题总结,包括Vue框架、JavaScript基础知识、数据类型、防抖与节流、继承方式以及宏任务和微任务的区别,还有SSR与SPA的对比" Vue.js是前端开发中的一个流行框架,其路由系统是实现页面跳转的关键部分。在Vue Router中,页面跳转会经过两个全局导航守卫:`beforeEach`和`afterEach`。`beforeEach`在每次路由变化前执行,常用于权限验证或数据预加载。`afterEach`则在每次路由变化后执行,适用于全局的页面更新或性能优化。此外,还有组件内的守卫`beforeRouteEnter`,它在组件实例创建之前运行,特别适用于数据预加载。 在数据响应式方面,Vue区分了计算属性(computed)和观察者(watch)。计算属性在依赖的数据发生改变时自动重计算,如果数据没有改变,它将返回缓存的结果,不进行额外计算。而watch则更像事件监听器,当指定的属性变化时,执行对应的回调函数,适合于一对多的数据监听和异步操作。 JavaScript的数据类型分为值类型和引用类型。值类型包括字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)以及ES6引入的Symbol。引用类型如对象(Object)、数组(Array)和函数(Function)则是存储在堆内存中,通过引用访问。 防抖(debounce)和节流(throttle)是优化性能的常见技巧。防抖函数确保在特定时间间隔内,只执行最后一次调用,如果在这期间再次触发,会重新计时。节流函数则保证在设定的时间间隔内,无论触发多少次,都只执行一次。 JavaScript的继承方式多样,包括原型链继承、构造函数继承、组合继承(结合了原型链和构造函数)、原型式继承、寄生式继承以及寄生组合式继承。其中,寄生组合式继承被认为是最佳实践,因为它避免了构造函数的重复调用。 宏任务(macrotask)和微任务(microtask)是JavaScript异步执行的两种机制。宏任务包括script、setTimeout/setInterval、UI渲染、postMessage等,它们按照事件队列的顺序依次执行。微任务如MutationObserver、Promise回调、process.nextTick(Node.js)等,会在当前宏任务结束后,但下一个宏任务开始前执行,优先级更高。 最后,服务端渲染(SSR)和客户端渲染(SPA)是两种不同的应用实现方式。SSR是在服务器端完成HTML渲染,然后发送给客户端,有利于SEO和首屏加载速度。SPA则主要在客户端进行页面跳转和渲染,提供更好的用户体验,但不利于SEO和初始加载性能。