Fermer

avril 28, 2021

Toujours tendre suite à une mise à jour approximative? Suivez la recette Simple Vue 3!


Pourquoi reporter une mise à jour ou effectuer une migration à la dure? Vue 3 est prêt pour la production et je vais vous montrer que la migration est aussi simple que de préparer un simple dîner.

Si vous vous demandez toujours: «Pourquoi vous embêter avec Vue 3?» laissez-moi vous dire un secret – Vue 3 était l'une des versions les plus attendues de 2020, et jusqu'en 2021, la plupart des bibliothèques Vue populaires prévoient également d'y migrer. Il combine de nombreuses nouvelles fonctionnalités, comme une nouvelle configuration simple introduite par l'API Composition, une prise en charge complète et brillante de TypeScript, de meilleures performances, une nouvelle réactivité, de nouvelles options de regroupement avec des importations de modules ES natifs via Vite et bien d'autres joyaux cachés.

Je viens de faire un acte de foi et de mettre à jour l'interface de Kendo pour l'application Vue, qui est générée par Kendo UI Template Wizard vers Vue 3.0. Dans le cadre de cet effort, j'ai noté quelques notes étape par étape utiles qui pourraient vous aider à accélérer le processus de migration.

Commençons par les mises à jour de « package.json» comment trouver si les bibliothèques ou les composants que vous utilisez prennent en charge Vue 3, et en passant par les mises à jour du routeur et de la structure des composants qui sont possibles avec Vue 3.

Je n'inclurai pas TypeScript dans cette application, mais j'essaierai de couvrir ce sujet dans l'un de mes prochains articles de blog, alors préparez-vous! Tout ce dont nous avons besoin, c'est d'une petite gorgée d'informations avant de passer par certaines étapes de migration, puis nous serons prêts.

 Mème de Leonardo DiCaprio riant et buvant dans Django Unchained

Étape 1: Regardez votre recette

Lorsqu'il s'agit d'applications Vue, la «recette» peut être le fichier «package.json» ou la liste des composants et bibliothèques que vous devez utiliser. Parfois, vous pourriez ne pas savoir si les composants dont nous avons besoin sont déjà disponibles pour Vue 3. J'ai donc créé un référentiel Vue2ToVue3 qui répertorie tous les packages avec des composants du référentiel «awesome-vue» et coché ceux qui sont déjà disponibles pour Vue 3. Les autres sont liés à un problème où la migration est enregistrée, nous pouvons donc facilement vérifier la disponibilité d'une logique souhaitée.

Dans mon cas, j'ai utilisé Kendo Vue pour UI qui est entièrement compatible avec Vue 3. J'ai également mis à niveau vers la dernière version (actuellement 2.1.5).

Après cela, j'ai dû mettre à jour les versions des packages liés à Vue:

Vue 2 Vue 3
"core-js": "^ 3.4.4",
"vue": "^ 2.6.10",
"vue-class-component": "^ 7.2.2",
"vue-router": "^ 3.1.5"
},
"devDependencies": {
" @ vue / cli-plugin-babel ":" ^ 4.1.0 ",
" @ vue / cli-plugin-eslint ":" ^ 4.1.0 ",
" @ vue / cli-service ": "^ 4.1.0",
"babel-eslint": "^ 10.0.3",
"eslint": "^ 5.16.0",
"eslint-plugin-vue": "^ 5.0.0 ",
" node-sass ":" ^ 4.12.0 ",
" sass-loader ":" ^ 8.0.0 ",
" vue-template-compiler ":" ^ 2.6.10 "
},
" eslintConfig ": {
" root ": true,
" env ": {
" node ": true
},
"extend": [
"plugin: vue / essential",
"eslint: recommended"
]
"core-js": "^ 3.8.1",
"vue": "^ 3.0.11",
"vue-router": "^ 4.0.0"
},
"devDependencies": {
"@ vue / cli-plugin-babel": "^ 4.5.9",
"@ vue / cli-plugin-eslint": "^ 4.5 .9 ",
" @ vue / cli-service ":" ^ 4.5.9 ",
" @ vue / compiler-sfc ":" ^ 3.0.4 ",
" babel-eslint " : "^ 10.1.0",
"eslint": "^ 6.8.0",
"eslint-plugin-vue": "^ 7.2.0",
"node-sass": " ^ 4.12.0 ",
" sass-loader ":" ^ 8.0.0 "
},
" eslintConfig ": {
" root ": vrai,
" env ": {
"node": true
},
"extend": [
"plugin: vue / vue3-essential",
"eslint: recommended"
][19659015] Étape 2: Rassembler les ingrédients

Dans cette étape, j'avais besoin de trouver le point de départ de l'application Vue et de mettre à jour l'initialisation en fonction des besoins de Vue 3. Le principal changement dans le point de départ de l'application pour Vue 3 est que nous devrions importer la méthode createApp de vue et l'utiliser à la place de la «nouvelle instance de Vue» comme dans la version 2. Dans mon cas, cette logique se trouvait dans le fichier «src / main.js» et voici comment je l'ai modifiée:

Vue 2 Vue 3
import Vue depuis 'vue'
import App depuis './App .vue '
importer un routeur depuis "./router";[19459002</font>newVue({
render: h => h (App),
router
}). $ mount (' # app ')
import {createApp} depuis' vue '
import App depuis' ./App.vue'[19459027</font>importrouterdepuis"/router";[19459002[/createApp(App)use(router)mount('#app')

Étape 3: Cuire le plat principal

Dans cette étape, nous devons mettre à jour le code des bibliothèques populaires que nous utilisons, comme Vue Router et les composants ou fonctions d'interface utilisateur personnalisés – dans notre cas, c'est Kendo UI pour Vue et heureusement, il fonctionne aussi bien avec la version Vue 3.

Pour le Vu Utilisation d'eRouter, j'avais un fichier «src / router / index.js» où se trouvent tous les paramètres de routage, donc j'avais besoin d'utiliser les nouvelles fonctions createWebHistory et createRoute qui nous aident à définir notre routeur Vue 3:

Vue 2 [19659012] Vue 3
import Vue from "vue";
import Router from "vue-router";
import Home from "../components/Home";[19459027unityuse(Router);

exporter le nouveau routeur par défaut ({
mode: "history",
routes: [
{
path: "/",
name: "Home ",
component: Home
},

]
});

import {createWebHistory, createRouter} from" vue-router ";
import Home à partir de "../components/Home";[19459027[/19459027Accueil
},

];

const router = createRouter ({
history: createWebHistory (),
routes,
});

export défaut

Étape 4: Test de goût

J'ai recherché dans mon code d'autres utilisations variables de «Vue» qui étaient très populaires dans les scénarios Vue 2, comme la définition globale des composants sur l'instance principale de Vue, qui étaient pas dans la définition principale ou en ajoutant une propriété à un objet réactif en utilisant Vue.set .

Dans mon application, j'avais besoin de les changer et de les remplacer par la syntaxe Vue 3 – les composants peuvent être simplement déplacés au littéral de l'objet composant, la méthode «Vue.set» pourrait être remplacée par une simple réinitialisation de la propriété souhaitée, tandis que la fonction emit pourrait maintenant être importée de 'vue' et utilisé dans la fonction setup :

Vue 2 Vue 3
// pas dans la déclaration initiale
Vue.component ('Grid', Grid);
components : {
'Grid': Grid,
..
}
Vue.set (e.dataItem, e.field, e.value); e.dataItem [e.field] = e.value;
this. $ Emit ('edit', {dataItem: this.dataItem}); // emit dans une méthode dans la fonction setup
emit ('edit', {dataItem: props.dataItem}) ;

Étape 5: La sauce spéciale

Cette dernière étape est facultative, mais si vous voulez faire un effort supplémentaire et prouver que vous êtes un maître cuisinier, vous voudrez le faire: passez à la nouvelle Composition API . Si vous ne la connaissez pas, c'est la nouvelle syntaxe prise en charge dans les composants Vue 3 qui offre d'énormes options de flexibilité en vous donnant la possibilité de définir toute votre logique dans une fonction de configuration et d'extraire facilement des morceaux de code réutilisables.

Dans l'ordre pour y accéder, je devais inclure la fonction de configuration et définir les méthodes, les données et les propriétés calculées. Ce n'est pas du tout une tâche difficile;

Voici ci-dessous un changement de l'un de mes composants où nous effectuons les interactions avec les cellules d'édition dans le composant Grid . Le code ci-dessous est raccourci, mais vous pouvez vérifier le code réel en utilisant le Getting Started project de Kendo UI Template Wizard:

Vue 2 Vue 3
// fichier de composants – 178 lignes
data: function () {
return {
skip: 0,
take: 10,

};
},
created : function () {
},
calculé: {
hasItemsInEdit () {
return …
}
},
méthodes: {
itemChange: function (e) {

},
}
// fichier de composant – uniquement le setup
setup () {
return {
… useInlineEditGrid (sampleProducts)
};
}
// toute la logique est dans un fichier séparé
const useInlineEditGrid = function (sampleProducts) {
const initData = réactif ({
sauter: 0,
prendre: 10,

});

const hasItemsInEdit = computed (() => …);

const itemChange = (e) => {
};
return {
initData,
hasItemsInEdit,
itemChange,
….
};
}

export {useInlineEditGrid};

Voilà! J'espère que vous êtes toujours réveillé et que vous appréciez votre repas! 😊

Maintenant, le projet utilise Vue 3 avec un code prêt pour 2021. Vous pouvez télécharger l'extension VS Code et l'essayer maintenant! Si votre projet contient du code et des cas plus complexes, je vous recommande également de consulter mon article de blog «Tricky, Tricky — Hidden Migration Tips for Vue 3» ou vous pouvez même me contacter directement via Twitter: @ pa4oZdravkov .

Codage Happy Vue!




Source link