Vue 2.7 正式发布,代号为 Naruto

大家好,我是若川。持续组织了近一年的源码共读活动,感兴趣的可以 点此加我微信ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。另外:目前建有江西|湖南|湖北籍前端群,可加我微信进群。


今天,Vue 正式发布了 2.7 版本, 版本名称为 Naruto,即火影忍者。

尽管现在 Vue 3 是默认版本,但由于仍有许多用户由于依赖兼容性、浏览器支持要求或没有足够的带宽升级而不得不继续使用 Vue 2。在 Vue 2.7 中,从 Vue 3 向后移植了一些最重要的功能,以便 Vue 2 用户也可以从中受益。

向后移植的功能

  • Composition API

  • SFC <script setup>

  • SFC CSS v-bind

此外,还支持以下 API:

  • defineComponent():具有改进的类型推断(与Vue.extend相比);

  • h()useSlot()useAttrs()useCssModules()

  • set()del()nextTick() 在 ESM 构建中也作为命名导出提供。

Vue 2.7 还支持在模板表达式中使用 ESNext 语法。使用构建系统时,编译后的模板渲染函数将通过为普通 JavaScript 配置的相同 loaders / plugins。这意味着如果为.js文件配置了 Babel,它也将应用于 SFC 模板中的表达式。

注意事项

  • 在 ESM 构建中,这些 API 作为命名导出提供(仅限于命名导出):

import Vue, { ref } from 'vue'Vue.ref // undefined, 改用命名导出
  • 在 UMD 和 CJS 构建中,这些 API 作为全局 Vue 对象上的属性暴露。

与 Vue 3 的行为差异

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

  • 所有 Vue 2 更改检测警告仍然适用;

  • reactive()ref()shallowReactive() 将直接转换原始对象而不是创建代理:

// 在2.7中可行,在3.x中不可行
reactive(foo) === foo
  • readonly() 确实创建了一个单独的对象,但它不会跟踪新添加的属性并且不适用于数组;

  • 避免在 reactive() 中使用数组作为 root 值,因为如果没有属性访问,则不会跟踪数组的变化(这将导致警告);

  • Reactivity APIs 忽略带有 symbol 键的属性。

此外,以下功能是未移植的:

  • createApp()(Vue 2 没有独立的应用范围)

  • <script setup> 中的顶层 await(Vue 2 不支持异步组件初始化)

  • ❌ 模板表达式中的 TypeScript 语法(与 Vue 2 解析器不兼容)

  • ❌ Reactivity transform(仍处于试验阶段)

  • options 组件不支持 expose 选项(但 <script setup> 支持 defineExpose())。

升级指南

Vue CLI / webpack

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

  • 对于 v4:~4.5.18

  • 对于 v5:~5.0.6

(2)将 Vue 升级到 ^2.7.0。还可以从依赖项中删除 vue-template-compiler,因为在 2.7 中不再需要它。注意:如果正在使用 @vue/test-utils,可能需要暂时将它保留在依赖项中,但是这个要求也将在新版本的 Test Utils 中被取消。

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

  • vue-loader: ^15.10.0

  • vue-demi: ^0.13.1

如果没有,需要删除 node_moduleslock 文件并重新安装,以确保它们升级到最新版本。

(4)如果之前使用过 @vue/composition-api,请将其导入更新为 vue。注意,插件导出的一些 API,例如 createApp,未在 2.7 中移植。

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

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

Vite

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

注意,新插件不处理特定于 Vue 的 JSX / TSX transform,这是有意的。Vue 2  JSX / TSXtransform应该在一个单独的专用插件中处理,该插件将很快提供。

Volar 兼容性

Vue 2.7 提供了改进的类型定义,因此不再需要安装 @vue/runtime-dom 来支持 Volar 模板类型推断。现在只需要在 tsconfig.json 中进行以下配置:

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

Devtools 支持

Vue Devtools 6.2.0 增加了对检查 2.7 Composition API 状态的支持,但扩展可能仍需要几天时间在各个发布平台上通过审核。

2.7 版本的影响

Vue 2.7 是 Vue 2.x 的最终次要版本。在这个版本之后,Vue 2 进入了 LTS(长期支持),从现在开始持续 18 个月,并且将不再接收新功能。这意味着 Vue 2 将在 2023 年底结束其生命周期。这应该为大多数生态系统迁移到 Vue 3 提供充足的时间。

额外细节

在准备此版本时,Vue 团队将 Vue 2 代码库从 Flow 移植到了 TypeScript,这是基于核心团队成员 @pikax 的努力。这样更容易重用 Vue 3 中的代码,并为移植的 API 自动生成类型定义。除此之外,还将单元测试从 Karma + Jasmine 移至 Vitest,从而大大提高了维护 DX 和 CI 的稳定性。

原文:https://blog.vuejs.org/posts/vue-2-7-naruto.html

f0bf57c5696f17c23bdd70dd328a1f3a.gif

················· 若川简介 ·················

你好,我是若川,毕业于江西高校。现在是一名前端开发“工程师”。写有《学习源码整体架构系列》20余篇,在知乎、掘金收获超百万阅读。
从2014年起,每年都会写一篇年度总结,已经坚持写了8年,点击查看年度总结。
同时,最近组织了源码共读活动,帮助4000+前端人学会看源码。公众号愿景:帮助5年内前端人走向前列。

5af6b547358976834c917251406507dd.jpeg

扫码加我微信 ruochuan12、拉你进源码共读

今日话题

目前建有江西|湖南|湖北 籍 前端群,想进群的可以加我微信 ruochuan12 进群。分享、收藏、点赞、在看我的文章就是对我最大的支持

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/274611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js设置css色相旋转_色相旋转颜色方案是否保留了对色盲友好的能力?

js设置css色相旋转Hue rotation is often an easy way to change the appearance of a plot or figure without the need to create a new colour bar. However, when dealing with colourblindness, it is important to ensure that the spacing between colours is sufficien…

ux设计中的各种地图_在UX设计中使用阿拉伯语

ux设计中的各种地图Last year I got to work on an app that was ultimately going to be deployed globally in every market and every language including RTL (Right-to-Left) languages — with a specific focus on Arabic.去年&#xff0c;我开始致力于开发一个应用程序…

如何为前端项目一键自动添加eslint和prettier的支持

本文来自读者那个曾经的少年回来了 写的源码共读35期笔记文章&#xff0c;授权投稿&#xff0c;写的真好。本文参加了由公众号若川视野 发起的每周源码共读活动&#xff0c;点此加我微信 ruochuan12 了解详情一起参与。本文属于源码共读第35期 | 为 vite 项目自动添加 eslint 和…

极端原理_为极端而设计

极端原理*You can also read this article in German here.*您也可以 在此处 阅读 德语文章 。 In this article I’m going to draw on the Design thinking concept of designing for extreme users and I will argue that designing for extreme users can be considered a…

当CV工程师碰到了拷贝粘贴的需求——useClipboard的使用及源码解析

大家好&#xff0c;我是若川。持续组织了近一年的源码共读活动&#xff0c;感兴趣的可以 点此加我微信ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。…

ux和ui_从UI切换到UX设计

ux和uiI still remember those days, when I was a soon-to-be graphic design graduate who started to question what my future will be. At that time, I realized that I loved graphic design, but I wasn’t sure if I enjoyed doing it. Creating logos, posters, broc…

春季招聘后前端工程师的就业指南

尽管疫情反复&#xff0c;大厂裁员&#xff0c;招聘季仍是在困难中有条不紊地落下了尾声。回顾今年的春季招聘&#xff0c;北京青年报记者发现&#xff0c;互联网“大厂”依然对“研发岗”需求最为旺盛。但许多企业最近都在围绕“降本提效”来进行业务调整&#xff0c;这对技术…

探索式测试的思维模型

上一章介绍了探索式测试的定义。在实际项目的测试执行过程中&#xff0c;读者是否曾遇到如下的几个现象&#xff1a; 测试人员按照一个测试用例来执行测试&#xff0c;得到的程序输出与预期输出不一致。 测试人员判断程序的行为并不是缺陷&#xff0c;但根据新的输出想到了新的…

图解Git分支和命令

大家好&#xff0c;我是若川。持续组织了近一年的源码共读活动&#xff0c;感兴趣的可以 点此加我微信ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。…

vsco_VSCO重新设计:更直观,更简化的界面

vscoAmong the many photo-editing apps, VSCO has definitely become a popular favorite among both experienced photographers as well as “aesthetic” Instagram users. However, my interaction with the app starts and ends with using a few key filters and (maybe…

浅谈前端埋点监控

大家好&#xff0c;我是若川。持续组织了近一年的源码共读活动&#xff0c;感兴趣的可以 加我微信lxchuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。另外&…

css版式_第2部分:使版式具有响应能力,并为以后的版本奠定基础

css版式The feedback I’ve received over the past week has been amazing, and matches my own excitement about this project. I’ve spent a lot of time researching, writing, and teaching about creating better typography for reading on digital devices over the …

BBS项目--登录

BBS阶段性测试总要求 django登录报错 Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。 原因分析&#xff1a;出现这种情况在Windows中很常见&#xff0c;就是端口被占用 解决措施&#xff1a;这时我们只需改一下端口便可以了 登录前端页面(HTML…

【声明】

我的公众号和朋友圈有时会有一些课程推广广告&#xff0c;微博的收入来源。我接的广告一般来说都是比自己去买会优惠不少&#xff0c;我也会想方设法争取到更多福利&#xff08;优惠&#xff09;。买过的都知道确实优惠。如果有人看到觉得不合适&#xff0c;不想看到&#xff0…

怎么实现页面友好跳转_如何实现软,友好和一致的UI设计

怎么实现页面友好跳转重点 (Top highlight)Design trends are constantly changing, aren’t they? Each month there is a new visual effect or a trick that becomes “设计趋势在不断变化&#xff0c;不是吗&#xff1f; 每个月都有一个新的视觉效果或技巧&#xff0c;成为…

前端趋势 2022

大家好&#xff0c;我是若川。持续组织了近一年的源码共读活动&#xff0c;感兴趣的可以 加我微信lxchuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。另外&…

lightroom预设使用_在Lightroom中使用全景图增强照片游戏

lightroom预设使用Everyone here has taken a panorama with an iphone. We’ve spun around in a circle, trying to keep that arrow right on the line, and more than likely ended up with a strange, squiggly, horizontal photo. Every so often you might get lucky an…

第91次TC39会议举行,这还是我认识的JS吗?

大家好&#xff0c;我是若川。持续组织了近一年的源码共读活动&#xff0c;感兴趣的可以 加我微信 ruochuan12 参与&#xff0c;每周大家一起学习200行左右的源码&#xff0c;共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列。另外…

android调节音量——AudioManager的应用

Android中可以通过程序获取系统手机的铃声和音量。同样&#xff0c;也可以设置铃声和音量。Android中给出了AudioManager类来实现音量获取、音量控制。本篇基于 Android API 中的 AudioManager 作讲述&#xff0c;最后给出实例。下面是本篇大纲&#xff1a;1、认识 AudioManage…

静态创意和动态创意_再次发挥创意需要什么?

静态创意和动态创意重点 (Top highlight)According to Oxford dictionary, creativity means “1. Inventiveness. 2. the use of imagination or original ideas to create something.”根据牛津词典&#xff0c;创造力意味着“ 1。 创造力。 2.利用想象力或独创性的思想来创造…