WeakMaps
其中一個得到改進的是在可能的情況下從 Maps 和 Sets 轉移到WeakMaps 和WeakSets。
那是什么,為什么這么重要?
如果你在 Maps或 Sets 中存儲東西,你會對這些東西做一個引用。這意味著,只要Map或Set被使用,這個東西就不會被垃圾收集器從內存中釋放。
通常這是有意義的。但有時候不是。特別是當你寫一些代碼,只是深入到數據的正常工作流中。例如,通過在系統中流動的數據中添加診斷數據。
當你需要時,你希望數據被釋放,你不希望保留保留數據的權利。
這就是 WeakMaps 和 WeakSets 開始發揮作用的地方,Vue現在在內部更多地使用這些來防止內存泄漏并提高整體性能。
對 contenteditable="plAIntext-only" 的支持
我認為 contenteditable可以是true或false。但顯然,有第三個值 "plaintext-only"。
通常,當你將參數設置為true時,你也可以編輯格式,粘貼富文本。使用plaintext-only值則不行。
現在的變化是,Vue不會為html規范中定義的合法值拋出 Typescript 錯誤。
延遲加載圖像
再次,這只是對HTML特性的類型支持。它在3.3.5中被添加,并使你能夠將img的加載參數設置為lazy。
這樣,圖像不會立即加載,而是當你的瀏覽器決定你很快就能看到它時加載。
這是一個標準的HTML特性,已經存在了一段時間,但這個修復是一個很好的提醒,用它來提高應用程序的性能。
此版本中還有其他的錯誤修復和性能改進。
Vue 3.2.40的新功能
Vue的最新版本,受歡迎的Web框架于2022年9月28日發布,為開發者提供了修復的錯誤,為3.3版本做準備。
錯誤地禁用按鈕
上面的代碼說明了按鈕不應該被禁用,因為“false”在屬性中實際上是一個字符串,而不是一個布爾值。在Vue的最新版本中,它通過檢查屬性的類型來修復。
V-on不會拋出錯誤
上面的代碼和類似的最近拋出了錯誤,而它們本應該正常工作,它也被修復了。
事件被正確地觸發
上述代碼并沒有導致 onBlur被調用,而它應該被調用。動態和靜態v-on的合并導致這個bug消失。
修復了一個內存泄漏
在上述情況下,在dev場景中內存沒有被正確清理。它是由于提升的 vnodes不正確地保留了DOM節點引起的。現在也修復了。
這些是最有趣的修復,在其他一些與SSR有關的問題也被修復了,團隊正在大力工作。
Vue 3.2.41-45 的3個最有趣的錯誤修復
Vue團隊上個月并沒有休息。剛剛介紹了Vue 3.2.40,現在已經有了五個新的小版本。下面將帶你了解最重要的錯誤修復。
Vue對奇怪的單文件組件(SFC)拋出錯誤
傳遞給單文件組件解析器的代碼沒有 <template>,也沒有<script>。這是有效的HTML代碼,但很有可能傳遞這樣的代碼表示傳遞了錯誤的變量?,F在,如果組件不包含<template>或<script>標簽,解析器將拋出錯誤。
import { parse } from '@vue/compiler-sfc';
const result = parse(`
import a from 'vue'
`);
console.log(result.errors); // []
剝離HTML注釋不會導致空白被移除
通常,HTML 對于空白是寬容的。除非它不是,并且布局中斷。不幸的是,這種情況發生了,其中一個HTML注釋(如下所示)被剝離,而沒有被替換為空格。這發生在字符串插值附近?,F在已經修復了。
<template>
<div class="foo">
<h1>Message:</h1>
<!-- A comment explaining the interpolation below -->
{{ msg }}
</div>
</template>
可以在css中使用內聯注釋
以前,在內聯CSS中添加注釋會導致下面的CSS規則停止工作?,F在,你可以不受問題地使用注釋。
<div
style="
/* something */
width: 300px;
height: 300px;
background-color: pink;
"
></div>
Vue.js 3.3:優秀的DX和10倍速度的構建
Vue 推出了 3.3 成為了頭條新聞。我們都知道,Vue實際上是構建web應用程序的一種非??焖俸透咝У姆绞?。它能變得更好嗎?
看起來可以。新版本放寬了 props 和 emits 類型的規則,使Typescript開發者高興?,F在,定義 emits 也更容易,不需要樣板文件。為props提供默認值現在也很簡單。
新的 defineModel 使得定義雙向綁定更容易。
使用 defineSlots,我們可以為 slots 定義類型,這是一個有用的工具,可以很好地記錄代碼,并且易于使用。
使用 defineSlots,我們可以為slots定義類型,這是一個有用的工具,可以很好地記錄代碼,并且易于使用。
我們還可以享受通用組件。
Vue再次顯示它關心DX,并且能夠快速并直接地構建應用程序,而不需要很多線束。
它也關心性能?,F在從 rollup構建中分離類型檢查,ESBuild rolloup依賴都組合到根據發布說明的10倍更快的構建時間。
Jest被Vitest替換,意味著現在編寫和執行測試將更容易,更快。
更改類型生成器也有助于更精細地提高性能。
總的來說,這是一個很好的版本,涉及到每個人都應該關心的兩個主要問題:簡化使用和提高性能。
Vue團隊每次發布都顯示出它是一個生產項目的有價值的框架。它彌補了輕巧、快速、但功能強大和強類型庫之間的差距。
憑借像真正的自動導入和快速設置這樣的強大工具生態系統,它是現代web應用程序的絕佳選擇。