乐趣区

译Vue-32020年中状态更新

前言

之前我翻译的 [[译] 尤雨溪:Vue3 的设计过程](https://juejin.im/post/5ecf58…:尤雨溪希望能在 2020 年的上半年发布 Vue3.0,但眼看这都七月份了,2020 年已经过半,许多人都跑去 vue 的 issue 问现在到底怎么回事了,是不是心思全放在开发 vite 上了?

对此,尤雨溪在 vuejs/rfc 里面开了个 issue,特意来说明了 vue 现在的情况:

链接:https://github.com/vuejs/rfcs/issues/183

译文

我们的许多用户都在问这个问题:Vue 3 到底何时才能准备就绪?我们无法给出确切的答案,因为预估软件的交付时间本来就是不准确的。作为一个非营利性项目,我们希望专注于编写优秀的软件,而不是按时赶工期。但这确实是一个漫长的等待,而且我们知道这些不确定性会导致计划使用 Vue 3 的项目变得困难。所以我们想提供一些指导和详细的状态更新,以帮助我们的用户相应地调整他们的期望和计划。

在 Vue 3 上花费的大部分时间都花在了设计和构建内核上,这带来了许多令人兴奋的改进。但是,为了将整个框架标记为“已就绪”,它不仅仅涉及到 Vue 的核心部分。我们还需要具有兼容版本的支持库 (Vue Router,Vuex,test utils),工具(CLI,eslint 插件,浏览器 devtool 扩展,IDE 扩展) 和文档(适用于新用户和老用户迁移)。尽管我们一直在努力开发所有这些部分,但要使所有个各部分全都组合在一起需要付出大量的努力和协调,因此很难准确的预测时间表。我们最初希望在 2020 年上半年发布 Vue 3,但考虑到目前的进展,我们必须重新对其进行调整。我们当前的目标是 7 月中旬发布 RC 版(候选版本),8 月初发布 3.0 正式版。

决策树

但是,这并不意味着您不能现在就开始使用 Vue 3。现在,大多数框架部分都处于 beta 或 alpha 状态,而 vue 的核心版本已经由我们的最初使用者进行了广泛的测试。阻止我们进入 RC 的唯一原因是浏览器 devtools 扩展(目前正在积极开发中)。所有重要的更改都已写在 RFC 中了,并且我们没有要重大更改的计划。如果您一直在等待使用 Vue 3,以下是决策树,可帮助您进行相应的计划:

IWantVue3()

async function IWantVue3() {await read(`https://github.com/vuejs/rfcs/pulls?q=is%3Apr+is%3Amerged+label%3Acore+-label%3Arevoked+-label%3A2.6+sort%3Acomments-desc`)

  if (isTrue("I just want to play with Vue 3"))) {
    // If you just want to try Vue 3 out - you can do it right now with Vite.
    // Vite (https://github.com/vitejs/vite) is a new dev/build tool that we
    // created that is lighter, faster and produces smaller bundles. It works
    // with Vue 3 out of the box.
    run(`npm init vite-app hello-vue3`)
    return
  }

  if (isTrue("I am planning to use Vue 3 for a new project")) {if (isTrue("I need IE11 support")) {await IE11CompatBuild() // July 2020
    }
    if (isTrue("RFCs are too dense, I need an easy-to-read guide")) {await migrationGuide() // July 2020
    }
    if (isTrue("I'd rather wait until it's really ready") {await finalRelease() // Targeting early August 2020
    })
    run(`npm init vite-app hello-vue3`)
    return
  }

  if (isTrue("I am planning to upgrade an existing Vue 2 project")) {await IE11CompatBuild()
    await migrationGuide()
    await ecosystem(
      // this is the tricky part: if you have an existing, non-trivial Vue 2
      // app, you likely are using some dependencies that are not yet
      // Vue-3-compatible, for example meta frameworks like Nuxt, or UI
      // component libraries like Vuetify. If that's the case, our suggestion
      // is don't be in a hurry to upgrade. It *will* take some time for the
      // ecosystem to catch up.
      // Also note that you can start using Vue Composition API in Vue 2 today
      // via https://github.com/vuejs/composition-api - we are also going to be
      // backporting compatible Vue 3 features to 2.x once 3.0 is out.
    )
    return
  }

  if (isTrue("I am the author of a Vue ecosystem library")) {
    // It's time to make your lib Vue 3 compatible!
    return
  }
}

框架目前的状态

Vue 3 Core

  • 当前版本:v3.0.0-beta.18
  • GitHub 地址:https://github.com/vuejs/vue-next
  • RFC 地址:https://github.com/vuejs/rfcs/pulls?q=is%3Apr+is%3Amerged+label%3Acore

Vue 3 Core 已经处于测试阶段两个多月了。我们已经合并了所有计划中的重大更改 RFC,并且在正式 3.0 版本之前没有进一步的重大更改的计划。

成千上万的早期使用者已在新项目中使用过,并帮助我们修复了许多 bug 还帮我们发现了一些与 Vue 2 的不一致行为。在此阶段,我们认为 Vue 3 内核相当稳定,可以用于 RC。

Vue Router

  • 当前版本:v4.0.0-beta.1
  • GitHub 地址:https://github.com/vuejs/vue-router-next
  • RFC 地址:https://github.com/vuejs/rfcs/pulls?q=is%3Apr+is%3Amerged+label%3Arouter

4.0 版本的 router hooks 仍然存在一些轻微的与 vue-router 3.x 版本不一致行为,但这是唯一导致 Vue Router 标记为 Beta 的原因。该版本的 Vue Router 可用于非关键的新项目上。

Vuex

  • 当前版本:v4.0.0-beta.4
  • GitHub 地址:https://github.com/vuejs/vuex/tree/4.0

Vuex 4.0 和 3.x 之间的唯一区别是它兼容 Vue 3!并且已经准备与 Vue 3 一起进入 RC 阶段。

Vue CLI

当前可以通过 vue-cli-plugin-vue-next 来在 Vue CLI 中使用 Vue 3。您可以搭建一个新项目,然后运行 vue add vue-next 去切换到 Vue3。当达到 RC 时,Vue 3 将成为项目创建过程中的一个选项。

请注意,如果您不是特别需要 Webpack 和兼容 IE11,那么也可以使用 Vite 来启动 Vue 3 项目。

JSX 支持

当前有两种针对 Vue 3 的 JSX 转换实现,其语法略有不同(针对 Vue 的特定功能):

  • vueComponent/jsx
  • HcySunYang/vue-next-jsx

我们正在用这个 issue 来收集大家的意见以确保设计的统一,并制定一个 JSX 中应如何处理 Vue 功能的正式规范。如果您将 Vue 与 JSX 一起使用,请在该 issue 中提供您的反馈。

其他项目

项目名 状态
vue-devtools WIP(7 月上旬支持 Vue 3 beta)
eslint-plugin-vue v7.0.0-alpha.9 [[GitHub 地址]](https://github.com/vuejs/esli…
@vue/test-utils v2.0.0-alpha.7 [[GitHub 地址]](https://github.com/vuejs/vue-…
vue-class-component v8.0.0-alpha.6 [[GitHub 地址]](https://github.com/vuejs/vue-…
vue-loader v16.0.0-beta.4 [[GitHub 地址]](https://github.com/vuejs/vue-…
rollup-plugin-vue v6.0.0-beta.6 [[GitHub 地址]](https://github.com/vueCompone…
退出移动版