Vue 3 现已经成为新的默认版本

832 阅读3分钟

Evan You 在 vue 的官方博客上宣布:

Vue 3 现在是2022 年 2 月 7 日星期一的新默认版本!,目前官方文档已经更新

请务必阅读“可能需要采取的措施”部分,了解是否需要在切换前进行某些更改以避免损坏。

从库到框架

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

  • 核心库,即vuenpm 包
  • 文档,有足够的内容被认为是一本书
  • 构建工具链,即Vue CLI、vue-loader等配套包
  • 用于构建 SPA 的 Vue 路由器
  • Vuex 状态管理
  • 用于调试和分析的浏览器 devtools 扩展
  • Vetur,单文件组件 IDE 支持的 VSCode 扩展
  • 用于静态样式/错误检查的 ESLint 插件
  • Vue Test Utils 用于组件测试
  • 利用 Vue 的运行时特性的自定义 JSX 转换
  • VuePress 用于基于 Vue 的静态站点生成

这之所以成为可能,是因为 Vue 是一个社区驱动的项目。其中许多项目是由后来成为 Vue 团队成员的社区成员发起的。其余的最初是由我开始的,但现在几乎完全由团队维护(核心库除外)。

Vue 3 的软启动

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

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

新的 Vue

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

在 Vue 核心之外,我们几乎改进了框架的每个方面:

  • 速度极快,由Vite驱动的构建工具链
  • 更符合人体工程学的组合 API 语法通过 <script setup>
  • 通过Volar改进了对单个文件组件的 TypeScript IDE 支持
  • 通过vue-tsc对 SFC 进行命令行类型检查
  • 通过Pinia进行更简单的状态管理
  • 新的 devtools 扩展同时支持 Vue 2 / Vue 3 和允许社区库连接到 devtools 面板的插件系统

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

版本切换详情

以下是我们所说的“新默认值”的详细信息。此外,请阅读“可能需要采取的措施”部分,了解是否需要在切换前进行某些更改以避免损坏。

npm dist 标签

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

  • 所有其他官方 npm 包的latestdist 标签现在指向 Vue 3 兼容版本,包括vue-router、vuex、vue-loader和@vue/test-utils.

官方文档和网站

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

  • vuejs.org
  • 路由器.vuejs.org
  • vuex.vuejs.org
  • vue-test-utils.vuejs.org(移至test-utils.vuejs.org)
  • 模板资源管理器.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
  • 模板-explorer.vuejs.org -> v2.template-explorer.vuejs.org

GitHub 仓库

组织下的所有 GitHub reposvuejs都已在默认分支中切换到 Vue 3 版本。此外,我们已重命名以下 repos 以删除next它们的名称:

  • vuejs/vue-next->vuejs/core
  • vuejs/vue-router-next->vuejs/router
  • vuejs/docs-next->vuejs/docs
  • vuejs/vue-test-utils-next->vuejs/test-utils
  • vuejs/jsx-next->vuejs/babel-plugin-jsx

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

GitHub 会自动处理 repo 指令,因此之前指向源代码和问题的链接应该仍然有效。

开发工具扩展

Devtools v6 之前在 Chrome Web Store 的beta 频道下发布,现在在stable 频道下发布。

以前版本的 devtools 扩展仍然可用,并已移至旧版频道。

可能需要采取的行动

未版本化的 CDN 使用

如果您通过 CDN 链接使用 Vue 2 而不指定版本,请确保通过以下方式指定版本范围@2:

  • <script src="https://unpkg.com/vue"></script>
  • <script src="https://unpkg.com/vue@2"></script>
  • <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js"></script>
  • <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.min.js"></script> 注意:即使使用 Vue 3,您也应该始终在生产中指定版本范围,以避免意外加载未来的主要版本。

NPM latest标签

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

{
  "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"
  }
}