Vue 官推消息,Vue 2 将于 2023年12月31日停止维护。2023年12月24日,vue^2.7.16 版本发布,版本号为Swan Song,意为绝唱。vue2在vue的发展历程中,是一个重要的版本,是一个重要的里程碑,终版也标志着该版本的稳定和成熟。
同时维护vue3和vue2版本对vue开发团队来说,是不可持续的,创始人希望集中精力在Vue3的开发和推广上,随着vue3的生态系统的成熟,vue2正在经历一个慢慢被取代的过程。但不可否认的是,vue2框架在国内引导很大一部分前端程序员入门,在前端框架的使用几乎占据了大中小公司的半壁江山。
那么,来回顾一下vue的发展以及vue2这位老朋友的更新的历程吧
Vue.js 是一个流行的前端框架,它的发展历程可以大致概括如下:
-
起初版本:Vue.js 最初由尤雨溪(Evan You)在2013年开始开发,并在2014年2月发布了第一个公开版本 Vue 0.9.0。
-
Vue 1.x:在2014年底,Vue 1.0 被发布。这是一个重大的版本,带来了很多新的特性和改进,如组件化、虚拟DOM等。
-
Vue 2.x:在2016年9月,Vue 2.0 发布。这个版本引入了许多重要的变化和优化,如更好的性能、服务端渲染(SSR)、异步组件等。Vue 2.x 成为了一个非常受欢迎和广泛使用的版本。
-
Vue 3.x:Vue 3.0 在2020年9月发布,是一个重大的版本更新。Vue 3.0 带来了许多创新和改进,包括更快的渲染、更小的包大小、Composition API、Teleport、Fragment(片段)等。Vue 3.0 的响应性系统也进行了重写,提供了更好的性能和更灵活的响应式能力。
-
生态系统和工具:除了核心库之外,Vue 生态系统也在不断发展,涵盖了许多有用的工具和库,如 Vue Router、Vuex、Vite、Nuxt.js 等,为开发者提供了丰富的选择和支持。
-
社区和用户群:Vue.js 社区非常活跃,有一个庞大和热情的用户群。Vue 的文档和资源也得到了广泛的关注和贡献,为新手和经验丰富的开发者提供了丰富的学习和参考资料。
Vue.js 2.0 到 2.7 的版本可以大致概括如下:
-
2016.10 Vue.js 2.0:
- 引入了更快的虚拟 DOM 渲染算法。
- 支持服务端渲染 (SSR)。
- 提供了更好的自定义指令 API。
- 移除了一些不常用的特性和 API。
- 引入了异步组件等。
-
2016.11 Vue.js 2.1:
- 引入了对 IE9 的支持;
- 引入了作用域插槽,允许在子组件中传递数据给可重用的模板;
<keep-alive>
组件可以根据条件缓存组件;- 新增了
v-else-if
指令用于条件性渲染; - 可以在
v-bind
表达式中使用过滤器进行数据格式化;
-
2017.2 Vue.js 2.2:
- 引入了
.once
修饰符,用于监听器,以便只触发一次。 - 引入了
.passive
修饰符,用于滚动事件,以提高性能。 - 允许在
v-for
上使用对象,并提供v-for
的键名和键值等。 - 组件的
props
和计算属性现在定义在组件原型上以提高性能,错误处理和全局错误拦截的改进 - 新增功能包括服务器端渲染的改进、错误处理的改进、组件
v-model
的自定义选项和provide
、inject
功能
- 引入了
-
2017.4 Vue.js 2.3:
- 引入了
$once
方法,用于在事件总线上绑定一次性事件。 - 支持使用
null
来清除动态绑定的 prop。 - 对多根节点的渲染提供了更好的支持。
- 改进了
v-model
在组件上的表现。 - 组件方面,异步组件工厂可以返回一个包含加载组件、加载中组件和加载失败组件的对象,而函数式组件可以省略
props
选项并自动提取属性。
- 引入了
-
2017.7 Vue.js 2.4:
- 改进了自定义事件的错误处理。
- 引入了
$attrs
和$listeners
,用于在组件内访问父作用域的属性和事件监听器。 - 对
v-for
中的key
支持字符串模板。 - 包括完整的服务器端渲染和异步组件支持,不再限制在路由级别;更易于创建包装组件
- 性能改进方面,通过优化SSR渲染函数代码,提高了原始SSR渲染性能;同时从npm模块中删除
src
目录,减小了安装时的下载大小。
-
2017.10 Vue.js 2.5:
- 引入了
v-on.native
修饰符,用于监听组件根元素的原生事件。 - 支持动态和异步组件中的
v-model
。 - 提供了
v-pre
指令,用于跳过当前元素和所有子元素的编译等。 - 引入了新的错误处理钩子函数、改进了模板表达式错误消息和选项类型检查、提供更好的TypeScript类型声明支持。
- 引入了
-
2019.2 Vue.js 2.6:
- 支持自定义事件的
once
修饰符。 - 引入了 新的v-slot语法,
v-slot
的缩写语法#
。添加了scopedSlots
- 改进了对自定义事件处理函数返回 Promise 的支持等。
- 添加了
Vue.observable()
方法用于创建可观察对象、在$scopedSlots
上暴露了所有普通插槽等。
- 支持自定义事件的
-
2022.7 Vue.js 2.7:
- 改进了对模板编译的性能优化。
- 该版本主要是向下移植部分 Vue 3 的功能,对 TypeScript 用户提供更好的类型推断支持。
- 引入了内置的 Tree Shaking 支持,以减少 bundle 大小等。
- 同时支持了
defineComponent()
、h()
、useSlot()
等API,并提供了改进的类型推断。此外,还支持了emits
选项用于类型检查,允许在模板表达式中使用ESNext语法。
最后,再提一下vue3和vue2 区别在哪里
性能提升:Vue3 在内部架构上进行了优化,从而提高了性能。比如,Vue3 使用了 Proxy 代替 Object.defineProperty,这样可以更快地监听数据变化。
Composition API:Vue3 引入了 Composition API,使得组件的逻辑可以更好地封装和复用。这种方式相比 Vue2 的 Options API 更加灵活和易于维护。
更好的 TypeScript 支持:Vue3 内置了对 TypeScript 的支持,包括更好的类型推断和提示。
Teleport 组件:Vue3 新增了 Teleport 组件,可以帮助我们更方便地在 DOM 树中移动组件。
其他特性:Vue3 还新增了一些其他的特性,比如 Fragments、Suspense 等等。
需要注意的是,Vue3 与 Vue2 的一些语法和 API 有所不同,因此需要开发者学习新的语法和 API。但是,Vue3 在大多数情况下仍然可以与 Vue2 兼容。
你们现在用的vue版本是哪个呢?哈哈哈