Vue 3.5 "Tengen Toppa Gurren Lagann" sürümü
(blog.vuejs.org)- Bu minör sürüm, dahili iyileştirmeler ve kullanışlı yeni özellikler içeriyor; uyumluluğu bozan değişiklik yok.
Reactivity sistemi optimizasyonu
- Vue'nun reaktif sistemi büyük ölçüde yeniden düzenlendi; performans artırıldı ve bellek kullanımı iyileştirildi (-56%), ancak davranışta bir değişiklik yok.
- Bu yeniden düzenleme, SSR sırasında hesaplanan değerler ve bellekle ilgili sorunları çözüyor.
- 3.5'te büyük ve derin reaktif diziler için reaktivite takibi optimize edildi; bazı durumlarda 10 kata kadar daha hızlı.
Reactive Props Destructure
- Reactive Props Destructure, 3.5 ile kararlı hale geldi ve varsayılan olarak etkinleştirildi.
<script setup>içindedefinePropsçağrısından destructure edilen değişkenler artık reaktif.- Bu özellik, JavaScript'in varsayılan değer sözdizimini kullanarak varsayılan değeri olan props'ları tanımlamayı büyük ölçüde basitleştiriyor.
SSR iyileştirmeleri
Lazy Hydration
- Asenkron bileşenler artık
defineAsyncComponent()API'sindekihydrateseçeneğiyle bir strateji belirleyerek hydration zamanını kontrol edebiliyor.
useId()
useId(), sunucu ve istemci render'ında tutarlı şekilde garanti edilen, uygulama başına benzersiz ID'ler üretmek için kullanılabilen bir API.- Form öğeleri ve erişilebilirlik öznitelikleri için ID üretmekte kullanılabilir; hydration uyumsuzluğu olmadan SSR uygulamalarında kullanılabilir.
data-allow-mismatch
- İstemci değerinin sunucu değerinden kaçınılmaz olarak farklı olacağı durumlarda (ör. tarih),
data-allow-mismatchözniteliğiyle hydration uyumsuzluğu uyarıları bastırılabilir. - İzin verilen uyumsuzluk türlerini sınırlamak için özniteliğe bir değer de verilebilir (
text,children,class,style,attribute).
Custom element iyileştirmeleri
- 3.5,
defineCustomElement()API'siyle ilgili uzun süredir devam eden birçok sorunu gideriyor ve Vue ile custom element yazmak için çeşitli yeni özellikler ekliyor. configureAppseçeneği aracılığıyla custom element'ler için uygulama yapılandırması desteği sunuluyor.useHost(),useShadowRoot()vethis.$hostAPI'leri eklenerek custom element'in host öğesine ve shadow root'una erişim sağlanıyor.shadowRoot: falsegeçirilerek Shadow DOM olmadan custom element mount etmeyi destekliyor.nonceseçeneği desteği sunuluyor; bu değer, custom element tarafından eklenen<style>etiketine iliştiriliyor.
Dikkat çeken diğer özellikler
useTemplateRef()
- 3.5,
useTemplateRef()API'siyle template ref elde etmenin yeni bir yolunu sunuyor. - 3.5'ten önce, değişken adını statik
refözniteliğiyle eşleştiren normal ref kullanımı öneriliyordu. - Önceki yaklaşım, derleyicinin
refözniteliğini analiz edebilmesini gerektirdiği için statikreföznitelikleriyle sınırlıydı. - Buna karşılık
useTemplateRef(), ref'leri çalışma zamanındaki string ID üzerinden eşleştirdiğinden, değişen ID'ler için dinamik ref binding desteği sunuyor.
Deferred Teleport
- Yerleşik
<Teleport>bileşeninin bilinen bir kısıtı, teleport bileşeni mount edildiğinde hedef öğenin mevcut olması gerekliliğiydi. - Bu nedenle kullanıcıların, içeriği Vue tarafından render edilen başka bir öğeye teleport etmesi engelleniyordu.
- 3.5'te, mevcut render döngüsünden sonra mount edilen
<Teleport>içindeferprop'u eklendi; böylece bu artık çalışıyor.
onWatcherCleanup()
- 3.5, watcher içinde cleanup callback kaydetmek için global olarak içe aktarılan
onWatcherCleanup()API'sini tanıtıyor.
3 yorum
Bu sürümde, gerçek bileşen geliştirme sırasında kullanım kolaylığı gerçekten çok artmış.
Bu sürümün adı
Tengen Toppa Gurren Lagannimiş. (Bir başyapıttır! Benim izlediğim Gainax yapımları arasında sanırım sonuncusu buydu.)Vue, geleneksel olarak manga/anime adlarını kullandı. 1.0
Evangelion, 2.0Ghost in the Shell, 3.0One Piece, 3.3Rurouni Kenshin, 3.4Slam Dunkhttps://en.wikipedia.org/wiki/Vue.js#Versions