Mode vapeur
Le mode Vapor est facile à décrire trop étroitement.
La version courte est : afficher les composants Vue avec un chemin plus direct et plus précis et moins de surcharge du DOM virtuel.
C’est vrai, mais cela manque la question plus intéressante des outils.
Si le compilateur devient plus direct, alors la surface du compilateur devient plus importante.
Pourquoi la vapeur est importante
Le rendu Vue traditionnel possède un modèle mental fort et mature :
compiler des modèles en fonctions de rendu
créer des nœuds virtuels
Régions dynamiques différencielles
patcher le DOM
Ce modèle est flexible et éprouvé au combat.
Vapor demande ce qui se passe lorsque le compilateur peut générer une représentation plus directe de l’interface réactive. Au lieu de traiter le DOM virtuel comme l’abstraction centrale à l’exécution, le compilateur peut émettre des opérations qui relient la réactivité par câble plus proches des mises à jour du DOM elles-mêmes.
Cela déplace la pression de la généralité à l’exécution vers la précision au moment de la compilation.
Pour Vize, c’est excitant car Vize repose déjà sur l’idée qu’une chaîne d’outils Vue doit comprendre en profondeur le SFC avant qu’il n’émette quoi que ce soit.
Un type différent de responsabilité du compilateur
Lorsque la sortie du compilateur est plus directe, les erreurs deviennent plus marquées.
Le compilateur doit savoir :
quelles liaisons sont réactives
quelles opérations DOM sont stables
quelles expressions nécessitent des obtenteurs
quels props dynamiques nécessitent des chemins de mise à jour
quels emplacements et composants nécessitent des limites d’exécution
quels champs-clés de modèles sont locaux aux boucles, branches et emplacements
Dans un modèle DOM virtuel, une certaine incertitude peut être absorbée par diffing à l’exécution.
Dans un modèle plus direct de type Vapor, le compilateur porte davantage l’intention. Cela signifie que la qualité de l’analyse compte plus que tout. La cartographie des sources compte le plus. La couverture instantanée compte davantage.
C’est exactement le genre de problème que Vize est conçu pour explorer.
Vapor en tant que backend de première classe
L’architecture de Vize considère les modes de sortie du compilateur comme des backends apparentés, et non comme des implémentations non apparentées.
La même structure SFC et l’analyse des modèles devraient pouvoir alimenter :
Sortie du compilateur DOM
Sortie du compilateur SSR
Sortie du compilateur Vapor
Diagnostics qui expliquent pourquoi une construction est prise en charge ou non
Cela compte car la vapeur ne doit pas devenir un cas spécial déconnecté.
Si le support Vapor se situe dans le même modèle de chaîne d’outils que le support DOM et SSR, Vize peut comparer les sorties, réutiliser des instantanés et rendre les diagnostics plus cohérents entre les modes.
Changements de surface de débogage
Le mode Vapor modifie aussi l’expérience de débogage.
Lorsque la production est plus directe, les développeurs ont besoin de confiance en :
Ordre des opérations générées
Frontières de dépendance réactives
Placement des auditeurs lors de l’événement
Sémantique de mise à jour des props des composants
Comportement de nettoyage des branches et boucles
Hydratation ou compatibilité SSR lorsque c’est pertinent
Ce n’est pas seulement un problème d’exécution. C’est une question d’outillage.
Une bonne chaîne d’outils Vapor devrait aider à répondre :
Qu’est-ce que le compilateur pensait être statique ?
Qu’est-ce qu’il pensait être dynamique ?
D’où vient un parcours de mise à jour particulier ?
Quelle expression source a produit cette opération générée ?
Pourquoi cette construction a-t-elle reculé ou échoué ?
C’est là que l’analyse statique et l’approche de tests axés sur les instantanés de Vize deviennent utiles.
Performance sans perdre la sémantique
La vapeur est orientée performance, mais la performance ne peut pas se faire au détriment de la sémantique Vue.
Les utilisateurs ne devraient pas avoir à mémoriser un second langage modèle juste pour utiliser le chemin le plus rapide. Le meilleur résultat, c’est que le compilateur comprend suffisamment bien le code Vue pour que le rendu direct paraît naturel.
Cela nécessite :
tests de compatibilité avec les attentes normales de Vue
Matchs réels
Diagnostics précis pour les motifs non pris en charge
Cartographie des sources soigneusement réalisée
des benchmarks incluant de grandes applications, pas seulement des exemples de jouets
L’objectif n’est pas « Vapor à tout prix ».
L’objectif est un chemin de compilateur rapide parce qu’il comprend davantage, pas parce qu’il supporte silencieusement moins.
Pourquoi cela convient à Vize
Vize est encore expérimental. C’est précisément pour cela que la vapeur est un lieu naturel pour elle.
Une chaîne d’outils indépendante peut explorer :
Formes alternatives de sortie du compilateur
Diagnostics plus stricts
Instantanés plus rapides
Modélisation directe des opérations DOM
Intégration avec l’analyse de modèles sensible aux types
Explications orientées vers l’IA des choix des compilateurs
L’écosystème officiel a besoin de stabilité. Vize peut aller plus vite, tester de façon agressive et apprendre en public.
C’est la bonne relation.
Le mode Vapor n’est pas juste une case à cocher pour Vize. C’est un test de résistance pour toute l’idée d’une chaîne d’outils Vue unifiée.
Si l’analyseur, l’analyseur, le compilateur, les diagnostics, les instantanés et les éléments réels s’alignent tous, alors Vapor devient bien plus qu’une simple optimisation en temps réel.
Cela prouve que la chaîne d’outils comprend suffisamment Vue pour lui offrir un avenir différent.