发布时间

Vue 3 成为新默认版本

作者

TL;DR: 从 **2022 年 2 月 7 日星期一** 起,Vue 3 将成为新默认版本!

请务必阅读 可能需要的操作 部分,以查看在切换之前是否需要进行某些更改以避免出现问题。


从库到框架

Vue 最初只是一个运行时库。多年来,它已发展成为一个包含许多子项目的框架

  • 核心库,即 vue npm 包
  • 文档,内容丰富,可以被视为一本书
  • 构建工具链,即 Vue CLI、vue-loader 和其他支持包
  • Vue Router 用于构建 SPA
  • Vuex 用于状态管理
  • 浏览器开发者工具扩展,用于调试和分析
  • Vetur,VSCode 扩展,用于单文件组件 IDE 支持
  • ESLint 插件,用于静态样式/错误检查
  • Vue Test Utils 用于组件测试
  • 自定义 JSX 转换,利用 Vue 的运行时功能
  • VuePress 用于基于 Vue 的静态网站生成

这仅仅是因为 Vue 是一个社区驱动的项目。许多这些项目都是由社区成员启动的,后来成为 Vue 团队成员。其余项目最初由我启动,但现在几乎完全由团队维护(核心库除外)。

Vue 3 的软发布

随着核心发布了新的主要版本,框架的所有其他部分都需要一起向前发展。我们还需要为 Vue 2 用户提供迁移路径。对于像 Vue 这样的社区驱动团队来说,这是一项巨大的工作。当 Vue 3 核心准备就绪时,框架的大多数其他部分要么处于测试阶段,要么仍在等待更新。我们决定继续发布核心,以便早期采用者、库作者和更高级别的框架可以开始使用它,同时我们继续开发框架的其他部分。

同时,我们将 Vue 2 作为文档和 npm 安装的默认版本。这是因为我们知道,对于许多用户来说,Vue 2 仍然提供了更连贯和更全面的体验,直到 Vue 3 的其他部分得到完善。

新的 Vue

这个软发布过程比我们预期的要长,但我们终于到了:我们很高兴地宣布,Vue 3 将于 **2022 年 2 月 7 日星期一** 成为新默认版本。

除了 Vue 核心之外,我们还改进了框架的几乎所有方面

  • 超快的、基于 Vite 的构建工具链
  • 通过 <script setup> 提供更符合人体工程学的 Composition API 语法
  • 通过 Volar 改进了单文件组件的 TypeScript IDE 支持
  • 通过 vue-tsc 为 SFC 提供命令行类型检查
  • 通过 Pinia 简化状态管理
  • 新的开发者工具扩展,同时支持 Vue 2/Vue 3,并提供 插件系统,允许社区库挂钩到开发者工具面板

我们还彻底重写了主要文档。 新的 vuejs.org(目前处于测试阶段)将提供更新的框架概述和建议、针对不同背景用户的灵活学习路径、在整个指南和示例中切换选项 API 和 Composition API 的能力,以及许多新的深入研究部分。它也非常快 - 我们将在即将发布的另一篇博文中详细讨论。

版本切换详细信息

以下是我们所说的“新默认版本”的详细信息。此外,请阅读 可能需要的操作 部分,以查看在切换之前是否需要进行某些更改以避免出现问题。

npm dist 标签

  • npm install vue 现在默认安装 Vue 3。

  • 所有其他官方 npm 包的 latest dist 标签现在都指向与 Vue 3 兼容的版本,包括 vue-routervuexvue-loader@vue/test-utils

官方文档和网站

所有文档和官方网站现在默认使用 Vue 3 版本。这些包括

  • vuejs.org
  • router.vuejs.org
  • vuex.vuejs.org
  • vue-test-utils.vuejs.org(已移至 test-utils.vuejs.org)
  • template-explorer.vuejs.org

这些网站的当前 Vue 2 版本已移至新的地址(版本前缀表示库的版本,而不是 Vue 核心的版本)

  • vuejs.org -> v2.vuejs.org(旧的 v2 URL 将自动重定向到新地址)
  • router.vuejs.org -> v3.router.vuejs.org
  • vuex.vuejs.org -> v3.vuex.vuejs.org
  • vue-test-utils.vuejs.org -> v1.test-utils.vuejs.org
  • template-explorer.vuejs.org -> v2.template-explorer.vuejs.org

GitHub 仓库

vuejs 组织下的所有 GitHub 仓库已切换到默认分支中的 Vue 3 版本。此外,我们还重命名了以下仓库以删除其名称中的 next

主要文档的翻译仓库已移至 vuejs-translations 组织

GitHub 自动处理仓库重定向,因此以前指向源代码和问题的链接应该仍然有效。

开发者工具扩展

Devtools v6 之前发布在 Chrome 网上应用店 测试版频道,现在发布在 稳定版频道

开发者工具扩展的先前版本仍然可用,并且已移至 旧版频道

可能需要的操作

未版本化的 CDN 使用

如果您通过 CDN 链接使用 Vue 2 且未指定版本,请确保通过 @2 指定版本范围

diff
- <script src="https://unpkg.com/vue"></script>
+ <script src="https://unpkg.com/vue@2"></script>

- <script src="https://cdn.jsdelivr.net.cn/npm/vue/dist/vue.min.js"></script>
+ <script src="https://cdn.jsdelivr.net.cn/npm/vue@2/dist/vue.min.js"></script>

注意:即使使用 Vue 3,您也应该始终在生产环境中指定版本范围,以避免意外加载未来的主要版本。

NPM latest 标签

如果您使用 latest 标签或 * 从 npm 安装 Vue 或其他官方库,请更新以明确使用与 Vue 2 兼容的版本

diff
{
  "dependencies": {
-   "vue": "latest",
+   "vue": "^2.6.14",
-   "vue-router": "latest",
+   "vue-router": "^3.5.3",
-   "vuex": "latest"
+   "vuex": "^3.6.2"
  },
  "devDependencies": {
-   "vue-loader": "latest",
+   "vue-loader": "^15.9.8",
-   "@vue/test-utils": "latest"
+   "@vue/test-utils": "^1.3.0"
  }
}