Inhaltsverzeichnis
初步排查
vue-demi原理
根本原因和解决方案
vue-demi-Prinzip
Ursache und Lösung
Heim Web-Frontend View.js In einem Artikel wird ausführlich erläutert, wie das Projekt nach der Vue-Version unterschieden werden kann

In einem Artikel wird ausführlich erläutert, wie das Projekt nach der Vue-Version unterschieden werden kann

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

Wie unterscheidet man nach Version? Der folgende Artikel stellt Ihnen die Differenzierungsmethode gemäß der vue-Version im Projekt vor. Ich hoffe, dass er für alle hilfreich ist!

In einem Artikel wird ausführlich erläutert, wie das Projekt nach der Vue-Version unterschieden werden kann

Vor Kurzem bin ich beim Initialisieren und Erstellen eines Projekts auf ein Konsolenfehlerproblem gestoßen: lib_exports.getCurrentInstance ist keine Funktion Ich habe bei der Fehlerbehebung dieses Problems einige Erkenntnisse gewonnen: Vue hat viele Versionen, wie zum Beispiel 2.6.x, 2.7, 3.x. Verschiedene Vue-Versionen haben Unterschiede in der Verwendung und werden verwendet Angenommen, es gibt ein öffentliches Tool, das für verschiedene Projekte bereitgestellt werden muss. Wie kann das Tool entsprechend den Vue-Versionen in verschiedenen Projekten unterschieden werden? Sie können zunächst darüber nachdenken, wie Sie es umsetzen, und dann mit Fragen im Hinterkopf weiterlesen. [Verwandte Empfehlungen: vuejs-Video-Tutoriallib_exports.getCurrentInstance is not a function,在排查这个问题的过程中学到了一些知识:vue有很多个版本,如2.6.x2.73.x,不同的vue版本存在使用差异,而不同的项目里会用到不同的vue版本,假设有一个公共工具需要提供给不同的项目使用,那么工具要如何根据不同项目里的vue版本进行差异化处理呢?可以自己先想一下如何实现,然后带着问题思考继续阅读下去。【相关推荐:vuejs视频教程web前端开发

In einem Artikel wird ausführlich erläutert, wie das Projekt nach der Vue-Version unterschieden werden kann

初步排查

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

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

In einem Artikel wird ausführlich erläutert, wie das Projekt nach der Vue-Version unterschieden werden kann

vue-demi原理

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

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

In einem Artikel wird ausführlich erläutert, wie das Projekt nach der Vue-Version unterschieden werden kann

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

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

In einem Artikel wird ausführlich erläutert, wie das Projekt nach der Vue-Version unterschieden werden kann

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

In einem Artikel wird ausführlich erläutert, wie das Projekt nach der Vue-Version unterschieden werden kann

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

In einem Artikel wird ausführlich erläutert, wie das Projekt nach der Vue-Version unterschieden werden kann

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

In einem Artikel wird ausführlich erläutert, wie das Projekt nach der Vue-Version unterschieden werden kann

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

根本原因和解决方案

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

代码运行时我们用的vue是vue2.5.X,尝试import { getCurrentInstance } from 'vue', Web-Frontend-Entwicklung

】🎜🎜In einem Artikel wird ausführlich erläutert, wie das Projekt nach der Vue-Version unterschieden werden kann🎜

Vorläufige Fehlerbehebung h2>🎜Wie Sie dem Fehler-Screenshot entnehmen können, ist die direkte Ursache der Konsolenfehler, der durch den Aufruf der Methode getCurrentInstance in der Methode useVModel von vueuse verursacht wird . Aus dem Vueuse-Quellcode können Sie ersehen, dass Vueuse die Methode getCurrentInstance von vue-demi importiert hat. 🎜🎜Dann schauen Sie sich den Quellcode von vue-demi an, wie unten gezeigt, und stellen Sie fest, dass etwas nicht stimmt. Die Vue-Version, die ich für dieses Projekt verwende, ist vue2. Warum ist isVue = true? Code> im Code? Darüber hinaus ist <code>getCurrentInstance nur in vue2.7 und vue3 integriert. Vor vue2.7 konnte getCurrentInstance nur über @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="In einem Artikel wird ausführlich erläutert, wie das Projekt nach der Vue-Version unterschieden werden kann" loading="lazy">🎜<h2 id="strong-vue-demi-Prinzip-strong"><strong>vue-demi-Prinzip</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🎜 wird auch für vue2 unterstützt , vue3.x-Schreibwerkzeugbibliothek. Vueuse verwendet diese Bibliothek, um einige Unterschiede zwischen vue2.6.x, vue2.7 und vue3.x auszugleichen. 🎜🎜Schauen Sie sich den Abschnitt scripts von vue-demis package.json an und Sie können sehen, dass es mit postinstall konfiguriert ist npm script Hook, postinstall Hook wird ausgeführt, nachdem Sie den Befehl pnpm install ausgeführt haben. 🎜🎜In einem Artikel wird ausführlich erläutert, wie das Projekt nach der Vue-Version unterschieden werden kann🎜🎜uns Schauen Sie sich dann an, was node_modules/vue-demi/scripts/postinstall.js tut. Zuerst wird versucht, vue zu laden (require('vue')). Bitte beachten Sie hier, dass dies nicht der Fall ist, wenn Sie einen Vue-Alias ​​in Vite oder Webpack konfigurieren, z. B. { find: /^vue$/, replacement: '@xf/vue' }, Das Skript wird wirksam, da das Skript unmittelbar nach der Installation der Abhängigkeiten ausgeführt wird. Das Projekt wurde zu diesem Zeitpunkt noch nicht gestartet und hat nichts mit Vite zu tun. 🎜🎜Nachdem versucht wurde, vue zu laden, ermittelt es die Bedingung und führt die Methode switchVersion aus. 🎜🎜In einem Artikel wird ausführlich erläutert, wie das Projekt nach der Vue-Version unterschieden werden kann🎜🎜switchVersion Die Hauptaufgabe der Methode besteht darin, unterschiedliche Konfigurationsinhalte basierend auf den übergebenen Versionsnummernparametern zu kopieren und in der Zieldatei zu ersetzen. 🎜🎜In einem Artikel wird ausführlich erläutert, wie das Projekt nach der Vue-Version unterschieden werden kann🎜🎜if Es ist vue2.5 oder vue2.6, dann kopiert es den folgenden Quellcodeinhalt: 🎜🎜In einem Artikel wird ausführlich erläutert, wie das Projekt nach der Vue-Version unterschieden werden kann🎜🎜Wenn es vue3 ist, dann kopiert es den folgenden Quellcodeinhalt: 🎜🎜In einem Artikel wird ausführlich erläutert, wie das Projekt nach der Vue-Version unterschieden werden kann🎜🎜vue-demi implementiert eine differenzierte Verarbeitung für verschiedene Vue-Versionen Das Prinzip ist so. 🎜

Ursache und Lösung

🎜Zurück zum Konsolenfehlerproblem im Projekt, das liegt an vue-demi Der Vue im Projekt kann nicht erkannt werden, da das installierte Projekt <code>@xf/vue ist, nachdem der Vue-Quellcode geändert wurde und kein pnpm add vuevorhanden ist >. Wenn es nicht erkannt wird, verwendet vue-demi die Standardkonfiguration (die Standardkonfiguration ist die vue3-Konfiguration). 🎜🎜Der Vue, den wir beim Ausführen des Codes verwenden, ist vue2.5.X. Wenn Sie import { getCurrentInstance } from 'vue' versuchen, wird auf jeden Fall eine Fehlermeldung angezeigt. 🎜

Die Lösung istvue-demi提供了手动切换vue版本配置的命令,我们给项目配置prepare的npm脚本:npx vue-demi-switch 2 Nach der Konfiguration wird es bei jeder Installation der Projektabhängigkeiten ausgeführt und manuell zur vue2-Konfiguration gewechselt.

(Teilen von Lernvideos: Vuejs-Einführungs-Tutorial, Grundlegendes Programmiervideo)

Das obige ist der detaillierte Inhalt vonIn einem Artikel wird ausführlich erläutert, wie das Projekt nach der Vue-Version unterschieden werden kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP und Vue: eine perfekte Kombination von Front-End-Entwicklungstools PHP und Vue: eine perfekte Kombination von Front-End-Entwicklungstools Mar 16, 2024 pm 12:09 PM

PHP und Vue: eine perfekte Kombination von Front-End-Entwicklungstools In der heutigen Zeit der rasanten Entwicklung des Internets ist die Front-End-Entwicklung immer wichtiger geworden. Da Benutzer immer höhere Anforderungen an das Erlebnis von Websites und Anwendungen stellen, müssen Frontend-Entwickler effizientere und flexiblere Tools verwenden, um reaktionsfähige und interaktive Schnittstellen zu erstellen. Als zwei wichtige Technologien im Bereich der Front-End-Entwicklung können PHP und Vue.js in Kombination als perfekte Waffe bezeichnet werden. In diesem Artikel geht es um die Kombination von PHP und Vue sowie um detaillierte Codebeispiele, die den Lesern helfen sollen, diese beiden besser zu verstehen und anzuwenden

Häufig gestellte Fragen von Front-End-Interviewern Häufig gestellte Fragen von Front-End-Interviewern Mar 19, 2024 pm 02:24 PM

In Front-End-Entwicklungsinterviews decken häufige Fragen ein breites Themenspektrum ab, darunter HTML/CSS-Grundlagen, JavaScript-Grundlagen, Frameworks und Bibliotheken, Projekterfahrung, Algorithmen und Datenstrukturen, Leistungsoptimierung, domänenübergreifende Anfragen, Front-End-Engineering, Designmuster sowie neue Technologien und Trends. Interviewerfragen sollen die technischen Fähigkeiten, die Projekterfahrung und das Verständnis des Kandidaten für Branchentrends beurteilen. Daher sollten Kandidaten in diesen Bereichen umfassend vorbereitet sein, um ihre Fähigkeiten und Fachkenntnisse unter Beweis zu stellen.

Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Einfaches JavaScript-Tutorial: So erhalten Sie den HTTP-Statuscode Jan 05, 2024 pm 06:08 PM

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

Ist Django Front-End oder Back-End? Hör zu! Ist Django Front-End oder Back-End? Hör zu! Jan 19, 2024 am 08:37 AM

Django ist ein in Python geschriebenes Webanwendungs-Framework, das Wert auf schnelle Entwicklung und saubere Methoden legt. Obwohl Django ein Web-Framework ist, müssen Sie zur Beantwortung der Frage, ob Django ein Front-End oder ein Back-End ist, ein tiefes Verständnis der Konzepte von Front-End und Back-End haben. Das Front-End bezieht sich auf die Schnittstelle, mit der Benutzer direkt interagieren, und das Back-End bezieht sich auf serverseitige Programme. Sie interagieren mit Daten über das HTTP-Protokoll. Wenn das Front-End und das Back-End getrennt sind, können die Front-End- und Back-End-Programme unabhängig voneinander entwickelt werden, um Geschäftslogik bzw. interaktive Effekte sowie den Datenaustausch zu implementieren.

Erkundung der Front-End-Technologie der Go-Sprache: eine neue Vision für die Front-End-Entwicklung Erkundung der Front-End-Technologie der Go-Sprache: eine neue Vision für die Front-End-Entwicklung Mar 28, 2024 pm 01:06 PM

Als schnelle und effiziente Programmiersprache erfreut sich Go im Bereich der Backend-Entwicklung großer Beliebtheit. Allerdings assoziieren nur wenige Menschen die Go-Sprache mit der Front-End-Entwicklung. Tatsächlich kann die Verwendung der Go-Sprache für die Front-End-Entwicklung nicht nur die Effizienz verbessern, sondern Entwicklern auch neue Horizonte eröffnen. In diesem Artikel wird die Möglichkeit der Verwendung der Go-Sprache für die Front-End-Entwicklung untersucht und spezifische Codebeispiele bereitgestellt, um den Lesern ein besseres Verständnis dieses Bereichs zu erleichtern. In der traditionellen Frontend-Entwicklung werden häufig JavaScript, HTML und CSS zum Erstellen von Benutzeroberflächen verwendet

Django: Ein magisches Framework, das sowohl Front-End- als auch Back-End-Entwicklung bewältigen kann! Django: Ein magisches Framework, das sowohl Front-End- als auch Back-End-Entwicklung bewältigen kann! Jan 19, 2024 am 08:52 AM

Django: Ein magisches Framework, das sowohl Front-End- als auch Back-End-Entwicklung bewältigen kann! Django ist ein effizientes und skalierbares Webanwendungs-Framework. Es unterstützt mehrere Webentwicklungsmodelle, einschließlich MVC und MTV, und kann problemlos hochwertige Webanwendungen entwickeln. Django unterstützt nicht nur die Back-End-Entwicklung, sondern kann auch schnell Front-End-Schnittstellen erstellen und durch die Vorlagensprache eine flexible Ansichtsanzeige erreichen. Django kombiniert Front-End-Entwicklung und Back-End-Entwicklung zu einer nahtlosen Integration, sodass sich Entwickler nicht auf das Lernen spezialisieren müssen

Kombination von Golang- und Front-End-Technologie: Entdecken Sie, welche Rolle Golang im Front-End-Bereich spielt Kombination von Golang- und Front-End-Technologie: Entdecken Sie, welche Rolle Golang im Front-End-Bereich spielt Mar 19, 2024 pm 06:15 PM

Kombination von Golang und Front-End-Technologie: Um zu untersuchen, welche Rolle Golang im Front-End-Bereich spielt, sind spezifische Codebeispiele erforderlich. Mit der rasanten Entwicklung des Internets und mobiler Anwendungen ist die Front-End-Technologie immer wichtiger geworden. Auch in diesem Bereich kann Golang als leistungsstarke Back-End-Programmiersprache eine wichtige Rolle spielen. In diesem Artikel wird untersucht, wie Golang mit Front-End-Technologie kombiniert wird, und sein Potenzial im Front-End-Bereich anhand spezifischer Codebeispiele demonstriert. Die Rolle von Golang im Front-End-Bereich ist effizient, prägnant und leicht zu erlernen

So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript So erhalten Sie auf einfache Weise HTTP-Statuscode in JavaScript Jan 05, 2024 pm 01:37 PM

Einführung in die Methode zum Abrufen des HTTP-Statuscodes in JavaScript: Bei der Front-End-Entwicklung müssen wir uns häufig mit der Interaktion mit der Back-End-Schnittstelle befassen, und der HTTP-Statuscode ist ein sehr wichtiger Teil davon. Das Verstehen und Abrufen von HTTP-Statuscodes hilft uns, die von der Schnittstelle zurückgegebenen Daten besser zu verarbeiten. In diesem Artikel wird erläutert, wie Sie mithilfe von JavaScript HTTP-Statuscodes erhalten, und es werden spezifische Codebeispiele bereitgestellt. 1. Was ist ein HTTP-Statuscode? HTTP-Statuscode bedeutet, dass der Dienst den Dienst anfordert, wenn er eine Anfrage an den Server initiiert

See all articles