Close
升级到 Vue 3 | Vue 2 EOL

迁移到 Vue 2.7

Vue 2.7 是 Vue 2 的最新次要版本。它提供了对 组合 API 的内置支持。

尽管 Vue 3 现在是默认版本,但我们理解仍然有很多用户由于依赖兼容性、浏览器支持要求或仅仅是升级带宽不足而不得不停留在 Vue 2 上。在 Vue 2.7 中,我们从 Vue 3 中移植了一些最重要的功能,以便 Vue 2 用户也能从中受益。

移植的功能

此外,还支持以下 API

关于 API 暴露的说明

与 Vue 3 的行为差异

组合 API 使用 Vue 2 的基于 getter/setter 的响应式系统进行移植,以确保浏览器兼容性。这意味着与 Vue 3 的基于代理的系统相比,存在一些重要的行为差异

此外,以下功能明确地没有被移植

升级指南

Vue CLI / webpack

  1. 将本地 @vue/cli-xxx 依赖项升级到你的主要版本范围内的最新版本(如果适用)

    • ~4.5.18 for v4
    • ~5.0.6 for v5
  2. vue 升级到 ^2.7.0。你也可以从依赖项中删除 vue-template-compiler - 它在 2.7 中不再需要。

    注意:如果你正在使用 @vue/test-utils,你需要在依赖项中保留 vue-template-compiler,因为测试工具依赖于仅在此包中暴露的一些 API。

  3. 检查你的包管理器锁定文件,以确保以下依赖项满足版本要求。它们可能是 package.json 中未列出的传递依赖项。

    • vue-loader: ^15.10.0
    • vue-demi: ^0.13.1

    如果没有,你需要删除 node_modules 和锁定文件并执行全新安装以确保它们被提升到最新版本。

  4. 如果你之前使用的是 @vue/composition-api,将来自它的导入更新到 vue。请注意,插件导出的某些 API(例如 createApp)在 2.7 中没有被移植。

  5. 如果你在使用 <script setup> 时遇到未使用的变量 lint 错误,请将 eslint-plugin-vue 更新到最新版本 (9+)。

  6. 2.7 的 SFC 编译器现在使用 PostCSS 8(从 7 升级)。PostCSS 8 应该与大多数插件向后兼容,但升级可能会导致问题,如果你之前使用的是只能与 PostCSS 7 一起使用的自定义 PostCSS 插件。在这种情况下,你需要将相关插件升级到它们与 PostCSS 8 兼容的版本。

Vite

2.7 对 Vite 的支持是通过一个新的插件提供的:@vitejs/plugin-vue2。这个新插件需要 Vue 2.7 或更高版本,并且取代了现有的 vite-plugin-vue2

请注意,新插件不处理特定于 Vue 的 JSX/TSX 转换,这是故意的。Vue 2 JSX/TSX 转换用于 Vite 在一个单独的专用插件中处理:@vitejs/plugin-vue2-jsx

Volar 兼容性

2.7 版本改进了类型定义,因此不再需要安装 @vue/runtime-dom 仅仅为了 Volar 模板类型推断支持。现在您只需要在 tsconfig.json 中添加以下配置即可。

{
// ...
"vueCompilerOptions": {
"target": 2.7
}
}

Devtools 支持

Vue Devtools 6.2.0 已添加对检查 2.7 Composition API 状态的支持,但扩展程序可能还需要几天时间才能在各自的发布平台上完成审核。

2.7 版本的影响

如前所述,2.7 是 Vue 2.x 的最后一个次要版本。在此版本发布后,Vue 2 进入 LTS(长期支持)阶段,从现在开始持续 18 个月,并且不再接收新功能。

这意味着 **Vue 2 将于 2023 年 12 月 31 日结束生命周期**。我们认为这应该为大多数生态系统迁移到 Vue 3 提供充足的时间。但是,我们也理解可能存在一些团队或项目无法在该时间线内升级,但仍然需要满足安全和合规性要求。如果您的团队预计在 2023 年底之后继续使用 Vue 2,请务必提前计划并了解您的选择:了解更多关于 Vue 2 LTS 和扩展支持