[brouillon]


26 fév 2018 - idée d'une v3 de Vue
12 sep 2018 - premier prototype de Vue 3, tout en bossant sur Vue 2
proxy based reactivty
19 sep 2018 - 'vue-next' repo => nota : exactement 2 ans après
le 19 sep 2020, Vue 3
21 sep, 2018 - Annonce de Vue 3 à Vue.JS Londres
Sep 2018 à début 2019 - Premières expérimentations (class, TypeScript, hooks, time slicing)
=> OK pour TypeScript
=> Evan You reconnait sans peine avoir joué avec les React Hooks et s'être demandé si il pouvait reprendre l'idée dans la v3 de Vue

4 janvier 2019 - RFC pour discuter avec la communauté

27 fév 2019 - Class API RFC
Mars à mai 2019 - Evan sent que la chose progresse, mais qu'il n'y a rien de marquant, de révolutionnaire qui ferait decette v3 un événement marquant
=> décision de calmer le jeu pour réfléchir à des évolutions dignes de sortir une v3
=> abandon de "Class API"
=> réécriture du noyau, plus précisément de la la "rendering logic" pour que le runtime soit conscient du compilateur == que le compilateur génère du code optimisé pour le runtime spécifique
== 2 mois de travail supplémentaire
7 juin 2019 - "Function API" RFC. Début de polémique car certains développeurs ne voulaient pas entendre parler de changement d'API de Vue à laquelle ils étaient habitués.
Juin - août 2019 - Design de la "Composition API" et demande de réactions de la communauté

16 Aout 2019 - RFC sur la "Composition API"
=> le tournant qui a permis d'abandonner la "Class API" au profit de la "Composition API"
+ stratégie de rendu améliorant les performances

Sep 2019 - Plein gaz dans le développement pour permettre une retro-compatibilité avec la V2 et l'implémentation d'un nouveau compilateur
Oct 2019 - v-model
Nov 2019 - Transition system
Dec 2019 - Outils : SFC (Single File Component Compiler ), HMR (Hot Module Replacement)
2 janvier 2020 - V 3.0.0-alpha.1

Janvier à avril 2020 - Server Side Rendering, a pris 3 mois de dev notamment pour permettre le "parallel async dependencies" et permettre une amélioration des performances du SSR de 200 à 300%

16 avril 2020 - 3.0.0-beta.1
Avril à Juillet 2020 - Trois mois de plus pour s'assurer sur des cas réels end-to-end que cette v3 est opérationnelle
== que tout l'écosystème de Vue soit compatible avec la v3
.
Testé sur l'application "Vite", un projet expérimental qui utilise les modules natifs d'EcmaScript en tant que serveur web, serveur qui supporte le SFC (Single File Component Compiler ), le HMR (Hot Module Replacement)
Test également VitePress pour s'assurer que le SSR est bien supporté (Static Site Generation et hydratation de contenu)
Parallèlement, l'équipe de Vue travaillait sur le router, xyz Vuex
, Vue Test Utils

17 juillet 2020 - 3.0.0-rc.1
Juillet à sep 2020 - Beaucoup de correction de bugs, de comportements incohérents. Sans oublier la mise à jour de la documentation.
18 septembre 2020 - Annonce de la version baptisée "One Piece" de Vue.js 3.0

En résumé :
2 années de développement
37 RFCs
2682 commits
628 pull requests par des humains (bien plus par des bots), humains qui ont vérifié et mergé
99 contributeurs
+ énormément de travail sur des projets annexes

L'équipe de Vue + des contributeurs + la communauté + des sponsors
La mission de Vue est d'être un framework avec une courbe d'apprentissage modérée pour un dev débutant ayant des bases en HTML, CSS et JavaScript.
Framework qui va continuer à grandir avec ses utilisateurs == qu'à mesure que l'utilisateur gagne en expérience et soit amené à effectuer des développement plus avancés, qu'il puisse continuer à utiliser Vue. Ce framework est adapté aux débutants mais aussi aux avancés qui ont des cas d'utilisation avancés
== outils, systèmes et APIs avancés pour des scénarii avancés

Aujourd'hui, Vue.js c'est :
- 1 million 300000 utilisateurs actifs par semaine
- 8 millions de download par mois depuis npm
- des entreprises telles que IBM, Apple, Microsoft, la Nasa etc utilisent Vue + un très nombre de PME et TPE
== adoption incrémentielle, du dév solo à la multinationale

Vue 3 veut être encore davantage ce "Progressive Framework"

Quoi de neuf dans Vue 3 :
- davantage de maintenabilité
grâce à TypeScript
grâce à la modularisation plus poussée de l'architecture
- plus rapide
proxy permettant le "Reactivity System"
compilateur ayant connaissance du Virtual DOM
Server Side Rendering
- bundle réduit
tree-shaking
compile-time flags pour indiquer ce qui ne peut pas être automatiquement tree-shaké
- meilleure scalabilité
grâce à composition API
- meilleure developer experience (DX)
grâce à l'amélioration apporté au Single-File Component
Type checking via les "template expressions" et les "props"

Modularisation de l'architecture :
- @vue/reactivity est un package distinct
- @vue/runtime-core est le runtime dans son package à part, ainsi il n'y a plus de cible de rendu présupposée + exposition d'API permettant d'ajouter des customs renderers au-dessus du runtime
+ plateform agnosticité du runtime + plugabilité (possibilité de créer des plugins)
=> cela permet la customisation durant la compilation via des plugins
ex : internationalisation durant la compilation via le plugin i18n

Grâce à TypeScript :
- meilleur support pour les IDEs,
=> facilite le debug, les refactorisations, l'écriture de tests
- facilite la contribution de la communauté

Composition API :
- purement optionnelle pour des cas d'utilisation avancés
- supporte TypeScript
- conçue par l'organisation du code, l'encapsulation et la réutilisabilité
- est recommandé en remplacement des mixins

Amélioration des performances grâce au Virtual DOM ayant connaissance du compilateur (Compiler-informed Virtual DOM) :
- la compilation des templates permet une AOT (Ahead of Time) analysis and optimisation afin de laisser au runtime des indices qui le soulage d'une partie de son travail de rendu

Server Side Rendering ayant connaissance du compilateur :
- autant que possible, on obtient une concaténation de strings, et exécution de JavaScript seulement quand c'est indispensable
- hydratation efficace grâce aux indices laissés par le compilateur permettant d'hydrater de façon granulaire et fine les nœuds qui seront dynamiques et sauter les nœuds statiques

Global tree-shaking API :
- réduit la taille de votre application
- Vue 3, avec TOUS ses features (minifié et compressé) fait seulement 23 Ko
== même taille que Vue 2 mais Vue 3 embarque d'avantage de features
- en excluant certaines features (tels que l'API Transition, keep alive, Suspense), la taille descend à 12 Ko
- si vous utilisé des flag de compilation pour supprimer 'option APi' pour utiliser utiliser 'composition API', la taille descend à 12 Ko

Les features du nouveau Single File Component :
- sucre syntaxique fournit par <script setup> pour facilité l'utilisation de l'API Composition dans un Single File Component
- tandis que <style vars> est du sucre syntaxique permettant l'injection de variables CSS de manière 'state-driven' dans le <style> de votre component

Feature expérimental : <Suspense>
Il permet, comme c'est dans le monde de React, de déclarativement attendre des dépendances asynchrones

Comment installer Vue 3 ?
Le core de la v3 est stable mais est encore taggué en @next dans npm.
Beaucoup de sous-projets sont en beta/RC et taggués @next
Il y aura un switch synchronisé fin 2020 pour tout passer de @next à @latest, donc pour que la master branch corresponde à la v3
Le build de migration n'est PAS encore prêt en ce 18 septembre 2020.
IE 11 n'est PAS encore supporté.

Vue 2.7
Dernière évolution mineure au premier trimestre 2021
LTS de 18 mois

Commencer avec Vue 3 dès aujourd'hui