12 月 24 日,Vue 2.7.16 正式发布,版本号为 Swan Song,意为绝唱。这是 Vue 2 的最后一个版本,该版本修复了一些已知问题。Vue 2 将于 2023 年 12 月 31 日到达生命周期终点。届时,Vue 官方将不再维护 Vue 2 版本,将把精力全部放在维护 Vue 3 上。本文就来看看 Vue 2 的发展历程以及 Vue 2 最后一个版本的更新内容!
Vue 2 发展历程
- 2016.10:Vue 2.0 发布,该版本带来了性能优化、渲染函数、服务端渲染和辅助库的升级等多个新特性和改进。它通过重写渲染层和智能优化处理,提高了性能,并且在开发模式上提供了更大的灵活性。支持服务端渲染和流式渲染,同时辅助库也得到了升级和支持。
- 2016.11:Vue 2.1 发布,该版本引入了作用域插槽,允许在子组件中传递数据给可重用的模板;<keep-alive> 组件可以根据条件缓存组件;新增了 v-else-if 指令用于条件性渲染;可以在 v-bind 表达式中使用过滤器进行数据格式化。
- 2017.2:Vue 2.2 发布,该版本在使用 v-for 和组件时需要提供 key 属性,模板解析器会对缺少闭合标签的标签报错,组件的 props 和计算属性现在定义在组件原型上以提高性能,错误处理和全局错误拦截的改进,移除了一些不应公开的方法和属性,以及对 Webpack 2 的适配。新增功能包括服务器端渲染的改进、错误处理的改进、组件 v-model 的自定义选项和 provide、inject 功能。
- 2017.4:Vue 2.3 发布,该版本主要是服务器端渲染和组件方面的改进。服务器端渲染方面,现在使用 data-server-rendered 属性来表示服务器渲染的标记,并支持在模板中进行简单的插值。组件方面,异步组件工厂可以返回一个包含加载组件、加载中组件和加载失败组件的对象,而函数式组件可以省略props选项并自动提取属性。这些改进提升了性能和灵活性。
- 2017.7:Vue 2.4 发布,该版本包括完整的服务器端渲染和异步组件支持,不再限制在路由级别;更易于创建包装组件,通过 inheritAttrs 选项关闭默认属性继承行为;引入了$attrs和$listeners实例属性,方便获取父级作用域的属性和监听器。性能改进方面,通过优化SSR渲染函数代码,提高了原始SSR渲染性能;同时从npm模块中删除 src 目录,减小了安装时的下载大小。
- 2017.10:Vue 2.5 发布,该版本引入了新的错误处理钩子函数、改进了模板表达式错误消息和选项类型检查、提供更好的TypeScript类型声明支持。在函数式组件方面,优化了编译模板和添加了作用域CSS支持。服务器端渲染方面改进了渲染函数的返回类型、添加了预取选项、自动移除初始状态嵌入脚本等功能。v-model和v-on方面增加了一些便利的修饰符和功能。
- 2019.2:Vue 2.6 发布,该版本实现了新的v-slot语法、在函数式组件中添加了scopedSlots、为生命周期钩子和v-on处理程序提供了同步和异步错误处理、支持动态指令参数、添加了Vue.observable()方法用于创建可观察对象、在$scopedSlots上暴露了所有普通插槽等。此外,还提到了对性能的改进和一些重要的内部变更。这些变化和改进增强了Vue的功能和性能,并提供了更好的开发体验。
- 2022.7:Vue 2.7 发布,该版本主要是向下移植部分 Vue 3 的功能,引入了Composition API、SFC <script setup>和SFC CSS v-bind等功能,同时支持了defineComponent()、h()、useSlot()等API,并提供了改进的类型推断。此外,还支持了emits选项用于类型检查,允许在模板表达式中使用ESNext语法。
Vue 2.7.16 更新日志
- compiler-sfc: 检查模板引用的使用情况。
- compiler-sfc: 修复了默认重写的边界情况。
- keep-alive: 修复了 keep-alive 内存泄漏问题。
- keep-alive: 修复了内存泄漏问题,同时不影响过渡测试。
- props: 不应解构作为原始引用的 props。
- shallowReactive: 在 shallowReactive 中设置已经是响应式的值时应该跟踪该值。
- style: 始终设置新的样式。
- types: 修复了 shallowRef 的返回类型。
- types: 修复了类型扩展和 compiler-sfc 类型 w/moduleResolution:bundler。
- types: 为内置组件提供类型。
- types: VNodeChildren 的类型应该允许数字类型。
- utils: 在模板中将引用解构时,将其转换为字符串。
- watch: 新属性的添加应该触发深层观察者的 getter。
- 考虑嵌套渲染调用。
- types: 为了与 v3 对齐,导出更多的类型(JSX / 组件选项)。
- lifecycle: 确保组件 effect 的作用域是独立的。