2022 年 7 月 1 号,Vue正式正式宣布正式正式宣布发布了2.7版。与此同时,也即告了Vue 2 将在 2023 月底全盘完结开发周期,这种做法也是为的是照料部份Vue2采用者即使难以升级换代版,但又想新体验Vue3新优点的的情形,比如复合式API。
那时他们很开心地正式宣布 Vue 2.7 “Naruto”早已正式正式宣布发布!
虽然 Vue 3 那时是预设版,但他们了解到仍有很多采用者虽然倚赖相容性、应用程序全力支持明确要求或显然没足够多的频宽升级换代而不得已回到 Vue 2。在 Vue 2.7 中,他们从 Vue 3 向后移殖了许多最重要的机能,以期 Vue 2 采用者也能由此受惠。
向后移殖的机能
除此之外,还全力支持下列 API:
defineComponent()具备改良的类别推测(与 较之Vue.extend)
h(), useSlot(), useAttrs(),useCssModules()
set(),del()因此nextTick()在 ESM 构筑中也做为重新命名求出提供更多。
也全力支持该emits快捷键,而仅用作类别检查和目地(不负面影响运转时犯罪行为)
2.7 还全力支持在模版表达式中采用 ESNext 句法。采用构筑控制系统时,校对后的模版图形表达式将透过为一般 JavaScript 实用性的完全相同读取器/应用程序。这意味著假如您为.js文档实用性了 Babel,它也将应用作您的 SFC 模版中的表达式。
API 暴露注意事项
在 ESM 构筑中,这些 API 做为重新命名求出(因此仅重新命名求出)提供更多:
import Vue, { ref } from vueVue.ref // undefined, use named export instead在 UMD 和 CJS 构筑中,这些 API 做为全局Vue对象的属性公开。
当与外部化 CJS 构筑捆绑时,捆绑器应该能够在外部化 CJS 构筑时处理 ESM 互操作。
与 Vue 3 的犯罪行为差异
女团 API 采用 Vue 2 的基于 getter/setter 的反应控制系统进行反向移殖,以确保应用程序相容性。这意味著与 Vue 3 的基于代理的控制系统存在许多重要的犯罪行为差异:
所有Vue 2 变更检测警告[4]仍然适用。
reactive(), ref(), 因此shallowReactive()将直接转换原始对象而不是创建代理。这表示:
// true in 2.7, false in 3.xreactive(foo) === fooreadonly() 确实创建了一个单独的对象,但它不会跟踪新添加的属性因此不适用作数组。
避免采用数组做为根值,reactive()即使假如没属性访问,将不会跟踪数组的突变(这将导致警告)。
反应性 API 忽略带有符号键的属性。
除此之外,下列机能明确未移殖:
升级换代指南
Vue CLI / webpack
将本地倚赖项升级换代@vue/cli-xxx到主要版范围内的最新版(假如适用):
升级换代vue到^2.7.0. 您还能vue-template-compiler从倚赖项中删除 – 在 2.7 中不再需要它。
注意:假如您正在采用@vue/test-utils,您可能需要暂时将其保回到倚赖项中,但此明确要求也将在新版的 test utils 中取消。
检查和您的包管理器锁定文档以确保下列倚赖项满足版明确要求。它们可能是未在 中列出的传递倚赖项package.json。
假如没,您将需要删除node_modules和锁定文档并执行全新安装,以确保它们升级换代到最新版。
vue-loader:^15.10.0vue-demi:^0.13.1假如您以前采用过`@vue/composition-api`[5],请将其导入更新为vue。请注意,应用程序求出的某些 API,比如createApp,在 2.7 中未移殖。
假如eslint-plugin-vue您在采用<script setup>.
2.7 的 SFC 校对器那时采用 PostCSS 8(从 7 升级换代)。PostCSS 8 应该向后兼容大多数应用程序,但假如您以前采用只能与 PostCSS 7 一起采用的自定义 PostCSS 应用程序,升级换代可能会导致问题。在这种情形下,您需要将相关应用程序升级换代到其 PostCSS 8 兼容版。
维特
2.7 对 Vite 的全力支持是透过一个新应用程序提供更多的:@vitejs/plugin-vue2[6]。这个新应用程序需要 Vue 2.7 或更高版并取代现有的vite-plugin-vue2[7]。
请注意,新应用程序不处理特定于 Vue 的 JSX / TSX 转换,这是有意的。Vue 2 JSX / TSX 转换应在一个单独的专用应用程序中处理,该应用程序将很快提供更多。
掌侧相容性
2.7 正式正式宣布发布了改良的类别定义,因此不再需要安装@vue/runtime-domVolar 模版类别推测全力支持。您那时只需要下列实用性tsconfig.json:
开发工具全力支持
Vue Devtools 6.2.0 增加了对检查和 2.7 女团 API 状态的全力支持,但扩展可能仍需要几天时间才能在各自的正式正式宣布发布平台上透过审核。
2.7 版的影响
如前所述,2.7 是 Vue 2.x 的最终次要版。在这个版之后,Vue 2 进入了 LTS(长期全力支持),从那时开始持续 18 个月,因此将不再接收新机能。
这意味著Vue 2 将在 2023 年底完结开发周期。他们认为这应该为大多数生态控制系统迁移到 Vue 3 提供更多充足的时间。但是,他们也知道可能有团队或项目难以在此时间线之前升级换代,但仍需要满足安全性和合规性明确要求。他们计划为有此类需求的团队提供更多对 Vue 2 的扩展全力支持——假如您的团队希望在 2023 月底之后采用 Vue 2,请务必在此处[8]计划并注册您的兴趣。
额外细节
在准备此版时,他们将 Vue 2 代码库从 Flow 移殖到 TypeScript,这是基于核心团队成员@pikax[9]的英勇努力。这使他们更容易重用 Vue 3 中的代码,并为移殖的 API 自动生成类别定义。他们还将单元测试从 Karma + Jasmine 移至Vitest[10],从而大大提高了维护 DX 和 CI 稳定性。
他们还想对之前在 2.7 可用之前弥合差距的社区努力表示感谢: