6 points par xguru 2024-09-06 | 3 commentaires | Partager sur WhatsApp
  • Cette version mineure inclut des améliorations internes et de nouvelles fonctionnalités utiles, sans changement cassant de compatibilité

Optimisation du système de réactivité

  • Le système réactif de Vue a été largement refactorisé pour améliorer les performances et réduire l'utilisation mémoire (-56 %), sans changement de comportement
  • La refonte corrige également des problèmes de valeurs calculées et de mémoire pendant le SSR
  • En 3.5, le suivi de réactivité pour les tableaux réactifs volumineux et profonds a été optimisé, avec dans certains cas des performances jusqu'à 10 fois supérieures

Destructuration réactive des props

  • La destructuration réactive des props a été stabilisée dans la 3.5 et activée par défaut
  • Dans <script setup>, les variables destructurées à partir de l'appel defineProps sont désormais réactives
  • Cette fonctionnalité simplifie grandement la déclaration de props avec des valeurs par défaut en s'appuyant sur la syntaxe native de valeurs par défaut de JavaScript

Améliorations SSR

Hydratation différée

  • Les composants asynchrones peuvent désormais contrôler le moment de leur hydratation en définissant une stratégie via l'option hydrate de l'API defineAsyncComponent()

useId()

  • useId() est une API qui permet de générer des identifiants uniques par application, garantis stables entre le rendu serveur et le rendu client
  • Elle peut être utilisée pour générer des ID pour les éléments de formulaire et les attributs d'accessibilité, et fonctionne dans les applications SSR sans incohérence d'hydratation

data-allow-mismatch

  • Quand une valeur côté client doit forcément différer de celle du serveur (par exemple une date), l'attribut data-allow-mismatch permet de supprimer l'avertissement d'incohérence d'hydratation
  • Il est aussi possible de limiter les types d'incohérences autorisés en donnant une valeur à l'attribut (text, children, class, style, attribute)

Améliorations des éléments personnalisés

  • La 3.5 corrige de nombreux problèmes de longue date liés à l'API defineCustomElement() et ajoute plusieurs nouvelles fonctionnalités pour créer des éléments personnalisés avec Vue
  • Prise en charge de la configuration de l'application pour les éléments personnalisés via l'option configureApp
  • Ajout des API useHost(), useShadowRoot() et this.$host pour accéder à l'élément hôte et au shadow root des éléments personnalisés
  • Prise en charge du montage d'éléments personnalisés sans Shadow DOM en passant shadowRoot: false
  • Prise en charge de l'option nonce, qui est attachée aux balises <style> injectées par les éléments personnalisés

Autres fonctionnalités notables

useTemplateRef()

  • La 3.5 introduit une nouvelle manière d'obtenir une référence de template via l'API useTemplateRef()
  • Avant la 3.5, il était recommandé d'utiliser une référence classique en faisant correspondre le nom de la variable avec l'attribut ref statique
  • L'approche précédente était limitée aux attributs ref statiques, car ils devaient pouvoir être analysés par le compilateur
  • À l'inverse, useTemplateRef() fait correspondre les références via un ID de chaîne à l'exécution, ce qui permet des liaisons dynamiques de références pour des ID changeants

Teleport différé

  • Une limitation connue du composant intégré <Teleport> était que l'élément cible devait exister au moment du montage du composant teleport
  • Cela empêchait les utilisateurs de téléporter du contenu vers d'autres éléments rendus par Vue
  • Dans la 3.5, une prop defer est introduite pour <Teleport>, dont le montage intervient après le cycle de rendu courant, ce qui permet désormais ce cas d'usage

onWatcherCleanup()

  • La 3.5 introduit onWatcherCleanup(), une API importée globalement pour enregistrer des callbacks de nettoyage dans les watchers

3 commentaires

 
[Ce commentaire a été masqué.]
 
narusas 2024-09-06

Cette version améliore vraiment énormément le confort lors du développement concret de composants.

 
xguru 2024-09-06

Le nom de cette version est donc « Tengen Toppa Gurren Lagann ». (Un chef-d’œuvre ! Je crois que c’est le dernier anime de Gainax que j’ai vu.)

Vue a, de façon traditionnelle ? utilisé des titres de manga/anime. La 1.0, c’était Evangelion, la 2.0 Ghost in the Shell, la 3.0 One Piece, la 3.3 Kenshin le vagabond, la 3.4 Slam Dunk
https://en.wikipedia.org/wiki/Vue.js#Versions