八月份面试总结
vue2和vue3的区别
1.性能改进:Vue.js 3在性能方面有着显著的改进。它引入了静态树提升(Static Tree Hoisting)和基于Proxy的响应式系统,以实现更快的渲染和更新速度。
2.更小的包大小:Vue.js 3通过重写许多内部逻辑,使用了更多的Tree-Shaking技术,使得包的大小更小。
3.Composition API:Vue.js 3引入了Composition API,这是一个基于函数的API,使得组件的逻辑可以更好地组织和复用。与Vue.js 2中的选项式API相比,Composition API具有更高的灵活性和可维护性。
4.Teleport:Vue.js 3引入了Teleport特性,它允许你将组件的内容渲染到DOM中的任意位置,而不仅仅是当前组件所在的位置。这对于创建模态框、弹出菜单等组件非常有用。
5.更好的TypeScript支持:Vue.js 3增强了对TypeScript的支持,提供了更好的类型推断和类型检查。
6.更好的响应式系统:Vue.js 3的响应式系统使用了ES6的Proxy代理对象,取代了Vue.js 2中的Object.defineProperty。这带来了更好的性能和更丰富的功能。
7.新的生命周期钩子:Vue.js 3引入了一些新的生命周期钩子函数,例如setup函数,它可以替代Vue.js 2中的beforeCreate和created钩子函数。
需要注意的是,虽然Vue.js 3在性能和功能上有所改进,但由于其引入了一些新的语法和概念,与Vue.js 2不完全兼容。因此,在升级到Vue.js 3时,可能需要进行一些代码调整和迁移工作。
注释:
1.静态树提升(Static Tree Hoisting) 是指在编译阶段将组件树中的静态节点(即不会发生变化的节点)转换为常量。在 Vue 3 中,编译器能够静态地分析模板中的节点,并且识别出哪些节点是静态的,哪些节点是动态的。通过对静态节点进行优化,可以减少运行时的开销,降低不必要的节点比对和更新操作。
静态属性提升(Static Props Hoisting) 是指将组件实例中的静态属性提升为常量。在 Vue 3 中,编译器会分析组件实例中的属性,将那些不会改变的属性提升为常量。这样做可以减少运行时对属性的访问开销,提高渲染性能。
2.
ref 和 reactive 这两个函数被用来取代 Vue.js 2 中的 data的原因
1.更灵活的响应式机制: 在 Vue.js 3 中,通过使用 ref 和 reactive,可以实现更灵活的响应式机制。相比于 Vue.js 2 中的 data,ref 和 reactive 提供了更多的选项和更细粒度的控制,使得响应式数据的定义和使用更加清晰和直观。
2.Composition API 的支持: Vue.js 3 引入了 Composition API,它允许将组件的逻辑封装为可复用的组合函数。ref 和 reactive 是 Composition API 的核心工具之一,它们提供了一种更好的方式来定义和处理组合函数中的响应式数据。通过将数据包装在 ref 或 reactive 中,可以在组合函数中轻松地追踪和更新数据的变化。
3.更好的类型推导和编辑器支持: 使用 ref 和 reactive 创建的响应式数据具有更好的类型推导和编辑器支持。这是由于 ref 和 reactive 内部使用 TypeScript 的泛型机制,使得类型推导更准确,并能够在编辑器中提供更好的代码补全和错误提示。这大大提升了开发效率和代码的可维护性。