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.pswp.cn/news/274611.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/274611.shtml
英文地址,請注明出處:http://en.pswp.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…

Tyvj 1921 Freda的煩惱

我就不說是CF hot days 原題了&#xff0c;我會告訴你使用Math庫是因為一開始偷懶不想寫Min函數么- 1 Uses math;2 Var n,m,i,t,tt,x,cost,ans,tmp:qword;3 Function min(x,y:qword):qword;4 Begin5 if x>y then exit(y);6 exit(x);7 end;8 Begin9 readln(n,m);10 …

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 和…

Server.Transfer方法在頁面間傳值

a.aspx頁面代碼&#xff1a; protected void Button5_Click(object sender, EventArgs e){Server.Transfer("b.aspx");}public string name{get{return this.TextBox1.Text;}} b.aspx頁面代碼&#xff1a; private void TheFour(){a newWebContext.Handler as a;//創…

極端原理_為極端而設計

極端原理*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余篇源碼文章。歷史面試系列。…

centos利用tar包安裝phpmyadmin

我的網站根目錄地址為/var/www/html&#xff0c;phpmyadmin安裝包在/tmp下。 注意&#xff1a;php版本低于5.1的建議安裝phpmyadmin2.11&#xff0c;因為phpmyadmin3.3對php版本的最低要求是php5.2 1 [rootCentOS ~]# tar -zxvf /tmp/phpMyAdmin-2.11.9-all-languages.tar.gz …

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…

不同長度數據項的排序

注&#xff1a;本文改編自windmissing博客&#xff0c;感謝作者整理&#xff01; 題目&#xff1a; a)給定一個整數數組&#xff0c;其中不同的整數中包含的數字個數可能不同&#xff0c;但是該數組中&#xff0c;所有整數中總的數字數為n。說明如何在O(n)時間內對該數組進行排…

淺談前端埋點監控

大家好&#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…

Win7 訪問共享時輸入正確密碼仍然提示密碼錯誤

1、直接按下winr鍵&#xff0c;輸入secpol.msc&#xff0c;打開本地安全策略。 2、找到“安全設置”的“本地策略”的“安全選項” 3、在右邊一欄找到“網絡安全&#xff1a;LAN管理器身份驗證級別”&#xff0c;雙擊進入 4、在默認狀態選項下&#xff0c;英文版應該為"no…

怎么實現頁面友好跳轉_如何實現軟,友好和一致的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;成為…