Table des matières
初步排查
vue-demi原理
根本原因和解决方案
Principe vue-demi
Cause première et solution
Maison interface Web Voir.js Un article explique en détail comment différencier le projet selon la version de vue

Un article explique en détail comment différencier le projet selon la version de vue

Dec 22, 2022 pm 09:29 PM
javascript 前端 vue.js

Comment différencier selon les versions ? L'article suivant vous présentera la méthode de différenciation selon la version vue du projet. J'espère qu'il vous sera utile !

Un article explique en détail comment différencier le projet selon la version de vue

Récemment, lorsque j'initialisais et construisais un projet, j'ai rencontré un problème d'erreur de console, lib_exports.getCurrentInstance n'est pas une fonction. J'ai acquis quelques connaissances en cours de dépannage de ce problème : vue a de nombreuses versions, telles que 2.6.x, 2.7, 3.x Différentes versions de vue ont des différences d'utilisation et elles seront utilisées. dans différents projets. Pour différentes versions de Vue, en supposant qu'il existe un outil public qui doit être fourni à différents projets, comment l'outil peut-il être différencié selon les versions de Vue dans différents projets ? Vous pouvez d’abord réfléchir à la manière de le mettre en œuvre, puis continuer à lire en gardant vos questions à l’esprit. [Recommandations associées : tutoriel vidéo vuejslib_exports.getCurrentInstance is not a function,在排查这个问题的过程中学到了一些知识:vue有很多个版本,如2.6.x2.73.x,不同的vue版本存在使用差异,而不同的项目里会用到不同的vue版本,假设有一个公共工具需要提供给不同的项目使用,那么工具要如何根据不同项目里的vue版本进行差异化处理呢?可以自己先想一下如何实现,然后带着问题思考继续阅读下去。【相关推荐:vuejs视频教程web前端开发

Un article explique en détail comment différencier le projet selon la version de vue

初步排查

从报错截图中可以看到,直接原因是vueuseuseVModel方法中调用了getCurrentInstance方法导致的控制台报错。从vueuse源码里就能看到vueuse是从vue-demi导入了getCurrentInstance方法。

接着看vue-demi的源码,如下图,发现不对啊,我这项目用的vue版本是vue2,为什么代码里的isVue = true?而且getCurrentInstance是vue2.7、vue3才内置的,vue2.7之前只能通过@vue/composition-api去使用getCurrentInstance

Un article explique en détail comment différencier le projet selon la version de vue

vue-demi原理

vue-demi是一个同时支持为vue2.x、vue3.x编写工具的工具库,vueuse就是利用这个库来抹平vue2.6.x、vue2.7、vue3.x之间的一些差异。

查看vue-demipackage.jsonscripts部分,可以看到它配置了postinstallnpm script钩子,postinstall钩子会在你执行pnpm install命令完成之后执行钩子。

Un article explique en détail comment différencier le projet selon la version de vue

我们接着看node_modules/vue-demi/scripts/postinstall.js做了些什么,它首先会去尝试加载vue(require('vue'))。这里要注意一下,如果你在vite或者webpack中配置了vue别名,比如{ find: /^vue$/, replacement: '@xf/vue' },,对脚本这里是不生效的,因为脚本是在安装依赖后立即执行的,这个时机还没有启动项目呢,跟vite没有关联。

尝试加载vue之后,就判断条件执行switchVersion方法。

Un article explique en détail comment différencier le projet selon la version de vue

switchVersion方法主要做的事情根据传入的版本号参数,拷贝不同的配置内容,替换到目标文件中。

Un article explique en détail comment différencier le projet selon la version de vue

如果是vue2.5、vue2.6,那么它拷贝的是下面的源码内容:

Un article explique en détail comment différencier le projet selon la version de vue

如果是vue3,那么它拷贝的是下面的源码内容:

Un article explique en détail comment différencier le projet selon la version de vue

vue-demi实现针对不同vue版本进行差异化处理的原理就是这样子。

根本原因和解决方案

回到项目里的控制台报错问题来,这里是因为vue-demi识别不到项目里的vue,因为项目里安装的是魔改vue源码之后的@xf/vue,没有pnpm add vue。识别不到,vue-demi就使用了默认配置(默认配置是vue3配置)。

代码运行时我们用的vue是vue2.5.X,尝试import { getCurrentInstance } from 'vue', développement web front-end

】🎜🎜Un article explique en détail comment différencier le projet selon la version de vue🎜

Dépannage préliminaire h2>🎜Comme vous pouvez le voir sur la capture d'écran de l'erreur, la cause directe est l'erreur de console provoquée par l'appel de la méthode getCurrentInstance dans la méthode useVModel de vueuse . À partir du code source de vueuse, vous pouvez voir que vueuse a importé la méthode getCurrentInstance depuis vue-demi. 🎜🎜Ensuite, regardez le code source de vue-demi, comme indiqué ci-dessous, et trouvez quelque chose qui ne va pas. La version de vue que j'utilise pour ce projet est vue2. Pourquoi isVue = truecode> dans le code ? De plus, <code>getCurrentInstance est intégré uniquement dans vue2.7 et vue3. Avant vue2.7, getCurrentInstance ne pouvait être utilisé que via @vue/composition-api<.>. 🎜🎜<img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/024/63cb3af9e760c9e7b15d91f0aa39bae9-1.png" class="lazy" alt="Un article explique en détail comment différencier le projet selon la version de vue" chargement="lazy">🎜<h2 id="strong-Principe-vue-demi-strong"><strong>Principe vue-demi</strong></h2>🎜<a href="https://www.php.cn/link/c65c5f98889255b931e271f8e6c79278" target="_blank" rel="nofollow noopener noreferrer" title="https://github.com/vueuse/vue-demi" ref="nofollow noopener noreferrer"><code>vue-demi🎜 est également pris en charge pour vue2 x. , bibliothèque d'outils d'écriture vue3.x, vueuse utilise cette bibliothèque pour atténuer certaines différences entre vue2.6.x, vue2.7 et vue3.x. 🎜🎜Regardez la section scripts du package.json de vue-demi et vous pouvez voir qu'il est configuré avec postinstall npm script hook, le hook postinstall sera exécuté après avoir exécuté la commande pnpm install. 🎜🎜Un article explique en détail comment différencier le projet selon la version de vue🎜🎜nous Ensuite, regardez ce que fait node_modules/vue-demi/scripts/postinstall.js. Il essaiera d'abord de charger vue (require('vue')). Veuillez noter ici que si vous configurez un alias de vue dans vite ou webpack, tel que { find: /^vue$/, remplacement : '@xf/vue' },, ce n'est pas le cas pour le script. Il prend effet car le script est exécuté immédiatement après l'installation des dépendances. Le projet n'a pas encore été démarré et n'a rien à voir avec Vite. 🎜🎜Après avoir essayé de charger vue, il détermine la condition et exécute la méthode switchVersion. 🎜🎜Un article explique en détail comment différencier le projet selon la version de vue🎜🎜switchVersion La principale tâche de la méthode est de copier différents contenus de configuration en fonction des paramètres de numéro de version transmis et de les remplacer dans le fichier cible. 🎜🎜Un article explique en détail comment différencier le projet selon la version de vue🎜🎜if Il s'agit de vue2.5 ou vue2.6, puis il copie le contenu du code source suivant : 🎜🎜Un article explique en détail comment différencier le projet selon la version de vue🎜🎜S'il s'agit de vue3, alors il copie le contenu du code source suivant : 🎜🎜Un article explique en détail comment différencier le projet selon la version de vue🎜🎜vue-demi implémente un traitement différencié pour différentes versions de vue Le principe c'est comme ça. 🎜

Cause première et solution

🎜Retour au problème d'erreur de console dans le projet, cela est dû à vue-demi La vue dans le projet ne peut pas être reconnue, car le projet installé est <code>@xf/vue après que le code source de la vue a été modifié, et il n'y a pas de pnpm add vue. S'il n'est pas reconnu, vue-demi utilise la configuration par défaut (la configuration par défaut est la configuration vue3). 🎜🎜La vue que nous utilisons lors de l'exécution du code est vue2.5.X Si vous essayez import { getCurrentInstance } from 'vue', vous obtiendrez certainement une erreur. 🎜

La solution estvue-demi提供了手动切换vue版本配置的命令,我们给项目配置prepare的npm脚本:npx vue-demi-switch 2. Après la configuration, elle sera exécutée à chaque fois que les dépendances du projet seront installées, et le passage manuel à la configuration vue2 sera effectué.

(Partage de vidéos d'apprentissage : Tutoriel d'introduction à vuejs, Vidéo de programmation de base)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP et Vue : une combinaison parfaite d'outils de développement front-end PHP et Vue : une combinaison parfaite d'outils de développement front-end Mar 16, 2024 pm 12:09 PM

PHP et Vue : une combinaison parfaite d'outils de développement front-end À l'ère actuelle de développement rapide d'Internet, le développement front-end est devenu de plus en plus important. Alors que les utilisateurs ont des exigences de plus en plus élevées en matière d’expérience des sites Web et des applications, les développeurs front-end doivent utiliser des outils plus efficaces et plus flexibles pour créer des interfaces réactives et interactives. En tant que deux technologies importantes dans le domaine du développement front-end, PHP et Vue.js peuvent être considérés comme une arme parfaite lorsqu'ils sont associés. Cet article explorera la combinaison de PHP et Vue, ainsi que des exemples de code détaillés pour aider les lecteurs à mieux comprendre et appliquer ces deux éléments.

Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Tutoriel JavaScript simple : Comment obtenir le code d'état HTTP Jan 05, 2024 pm 06:08 PM

Tutoriel JavaScript : Comment obtenir le code d'état HTTP, des exemples de code spécifiques sont requis Préface : Dans le développement Web, l'interaction des données avec le serveur est souvent impliquée. Lors de la communication avec le serveur, nous devons souvent obtenir le code d'état HTTP renvoyé pour déterminer si l'opération a réussi et effectuer le traitement correspondant en fonction de différents codes d'état. Cet article vous apprendra comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournira quelques exemples de codes pratiques. Utilisation de XMLHttpRequest

Questions fréquemment posées par les enquêteurs front-end Questions fréquemment posées par les enquêteurs front-end Mar 19, 2024 pm 02:24 PM

Lors des entretiens de développement front-end, les questions courantes couvrent un large éventail de sujets, notamment les bases HTML/CSS, les bases JavaScript, les frameworks et les bibliothèques, l'expérience du projet, les algorithmes et les structures de données, l'optimisation des performances, les requêtes inter-domaines, l'ingénierie front-end, les modèles de conception et les nouvelles technologies et tendances. Les questions de l'intervieweur sont conçues pour évaluer les compétences techniques du candidat, son expérience en matière de projet et sa compréhension des tendances du secteur. Par conséquent, les candidats doivent être parfaitement préparés dans ces domaines pour démontrer leurs capacités et leur expertise.

Django est-il front-end ou back-end ? Vérifiez-le! Django est-il front-end ou back-end ? Vérifiez-le! Jan 19, 2024 am 08:37 AM

Django est un framework d'application Web écrit en Python qui met l'accent sur un développement rapide et des méthodes propres. Bien que Django soit un framework Web, pour répondre à la question de savoir si Django est un front-end ou un back-end, vous devez avoir une compréhension approfondie des concepts de front-end et de back-end. Le front-end fait référence à l'interface avec laquelle les utilisateurs interagissent directement, et le back-end fait référence aux programmes côté serveur. Ils interagissent avec les données via le protocole HTTP. Lorsque le front-end et le back-end sont séparés, les programmes front-end et back-end peuvent être développés indépendamment pour mettre en œuvre respectivement la logique métier et les effets interactifs, ainsi que l'échange de données.

Explorer la technologie front-end du langage Go : une nouvelle vision du développement front-end Explorer la technologie front-end du langage Go : une nouvelle vision du développement front-end Mar 28, 2024 pm 01:06 PM

En tant que langage de programmation rapide et efficace, le langage Go est très populaire dans le domaine du développement back-end. Cependant, peu de gens associent le langage Go au développement front-end. En fait, l’utilisation du langage Go pour le développement front-end peut non seulement améliorer l’efficacité, mais également ouvrir de nouveaux horizons aux développeurs. Cet article explorera la possibilité d'utiliser le langage Go pour le développement front-end et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre ce domaine. Dans le développement front-end traditionnel, JavaScript, HTML et CSS sont souvent utilisés pour créer des interfaces utilisateur.

Django : Un framework magique capable de gérer à la fois le développement front-end et back-end ! Django : Un framework magique capable de gérer à la fois le développement front-end et back-end ! Jan 19, 2024 am 08:52 AM

Django : Un framework magique capable de gérer à la fois le développement front-end et back-end ! Django est un framework d'application Web efficace et évolutif. Il est capable de prendre en charge plusieurs modèles de développement Web, notamment MVC et MTV, et peut facilement développer des applications Web de haute qualité. Django prend non seulement en charge le développement back-end, mais peut également créer rapidement des interfaces frontales et obtenir un affichage de vue flexible via un langage de modèle. Django combine le développement front-end et le développement back-end dans une intégration transparente, afin que les développeurs n'aient pas à se spécialiser dans l'apprentissage.

Combinaison de Golang et de technologie front-end : découvrez comment Golang joue un rôle dans le domaine front-end Combinaison de Golang et de technologie front-end : découvrez comment Golang joue un rôle dans le domaine front-end Mar 19, 2024 pm 06:15 PM

Combinaison de Golang et de la technologie front-end : pour explorer le rôle de Golang dans le domaine front-end, des exemples de code spécifiques sont nécessaires. Avec le développement rapide d'Internet et des applications mobiles, la technologie front-end est devenue de plus en plus importante. Dans ce domaine, Golang, en tant que puissant langage de programmation back-end, peut également jouer un rôle important. Cet article explorera comment Golang est combiné avec la technologie front-end et démontrera son potentiel dans le domaine front-end à travers des exemples de code spécifiques. Le rôle de Golang dans le domaine front-end est celui d'un outil efficace, concis et facile à apprendre.

Comment obtenir facilement le code d'état HTTP en JavaScript Comment obtenir facilement le code d'état HTTP en JavaScript Jan 05, 2024 pm 01:37 PM

Introduction à la méthode d'obtention du code d'état HTTP en JavaScript : Dans le développement front-end, nous devons souvent gérer l'interaction avec l'interface back-end, et le code d'état HTTP en est une partie très importante. Comprendre et obtenir les codes d'état HTTP nous aide à mieux gérer les données renvoyées par l'interface. Cet article explique comment utiliser JavaScript pour obtenir des codes d'état HTTP et fournit des exemples de code spécifiques. 1. Qu'est-ce que le code d'état HTTP ? Le code d'état HTTP signifie que lorsque le navigateur lance une requête au serveur, le service

See all articles