suchen
HeimWeb-FrontendView.jsIn einem Artikel wird ausführlich erläutert, wie das Projekt nach der Vue-Version unterschieden werden kann

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/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/024/63cb3af9e760c9e7b15d91f0aa39bae9-1.png?x-oss-process=image/resize,p_40" 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!

Stellungnahme
Dieser Artikel ist reproduziert unter:掘金社区. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen
Vue.js verstehen: vor allem ein Frontend -FrameworkVue.js verstehen: vor allem ein Frontend -FrameworkApr 17, 2025 am 12:20 AM

Vue.js ist ein progressives JavaScript -Framework, das von Ihnen Yuxi im Jahr 2014 veröffentlicht wurde, um eine Benutzeroberfläche zu erstellen. Zu den Kernvorteilen gehören: 1. Responsive Datenbindung, automatische Aktualisierungsansicht von Datenänderungen; 2. Komponentenentwicklung kann die Benutzeroberfläche in unabhängige und wiederverwendbare Komponenten aufgeteilt werden.

Netflix -Frontend: Beispiele und Anwendungen von React (oder Vue)Netflix -Frontend: Beispiele und Anwendungen von React (oder Vue)Apr 16, 2025 am 12:08 AM

Netflix verwendet React als Front-End-Framework. 1) Reacts komponentiertes Entwicklungsmodell und ein starkes Ökosystem sind die Hauptgründe, warum Netflix es ausgewählt hat. 2) Durch die Komponentierung spaltet Netflix komplexe Schnittstellen in überschaubare Teile wie Videotiere, Empfehlungslisten und Benutzerkommentare auf. 3) Die virtuelle DOM- und Komponentenlebenszyklus von React optimiert die Rendering -Effizienz und die Verwaltung des Benutzerinteraktion.

Die Frontend -Landschaft: Wie Netflix ihre Auswahl annähteDie Frontend -Landschaft: Wie Netflix ihre Auswahl annähteApr 15, 2025 am 12:13 AM

Die Auswahl von Netflix in der Front-End-Technologie konzentriert sich hauptsächlich auf drei Aspekte: Leistungsoptimierung, Skalierbarkeit und Benutzererfahrung. 1. Leistungsoptimierung: Netflix wählte React als Hauptgerüst und entwickelte Tools wie SpeedCurve und Boomerang, um die Benutzererfahrung zu überwachen und zu optimieren. 2. Skalierbarkeit: Sie übernehmen eine Mikro-Front-End-Architektur, die Anwendungen in unabhängige Module aufteilt und die Entwicklungseffizienz und die Systemskalierbarkeit verbessern. 3. Benutzererfahrung: Netflix verwendet die Material-UI-Komponentenbibliothek, um die Schnittstelle kontinuierlich durch A/B-Tests und Benutzer-Feedback zu optimieren, um Konsistenz und Ästhetik sicherzustellen.

React vs. Vue: Welches Framework verwendet Netflix?React vs. Vue: Welches Framework verwendet Netflix?Apr 14, 2025 am 12:19 AM

NetflixuSesacustomframeworkcalted "Gibbon" Builtonreact, NotreactorVuedirect.1) TeamExperience: Wählen Sie beobädtes Vertrauen

Die Wahl der Frameworks: Was treibt die Entscheidungen von Netflix vor?Die Wahl der Frameworks: Was treibt die Entscheidungen von Netflix vor?Apr 13, 2025 am 12:05 AM

Netflix berücksichtigt hauptsächlich Leistung, Skalierbarkeit, Entwicklungseffizienz, Ökosystem, technische Schulden und Wartungskosten bei der Rahmenauswahl. 1. Leistung und Skalierbarkeit: Java und Springboot werden ausgewählt, um massive Daten und hohe gleichzeitige Anforderungen effizient zu verarbeiten. 2. Entwicklungseffizienz und Ökosystem: Verwenden Sie React, um die Effizienz der Front-End-Entwicklung zu verbessern und sein reiches Ökosystem zu nutzen. 3. Technische Schulden- und Wartungskosten: Wählen Sie Node.js, um Microservices zu erstellen, um Wartungskosten und technische Schulden zu senken.

Reagieren, Vue und die Zukunft von Netflix 'FrontendReagieren, Vue und die Zukunft von Netflix 'FrontendApr 12, 2025 am 12:12 AM

Netflix verwendet React hauptsächlich als Front-End-Framework, das durch VUE für bestimmte Funktionen ergänzt wird. 1) Die Komponentierung von React und das virtuelle DOM verbessern die Leistung und Entwicklungseffizienz von Netflix -Anwendungen. 2) VUE wird in den internen Tools und kleinen Projekten von Netflix verwendet, und seine Flexibilität und Benutzerfreundlichkeit sind entscheidend.

Vue.js im Frontend: Anwendungen und Beispiele in realer WeltVue.js im Frontend: Anwendungen und Beispiele in realer WeltApr 11, 2025 am 12:12 AM

Vue.js ist ein progressives JavaScript -Framework, das zum Erstellen komplexer Benutzeroberflächen geeignet ist. 1) Zu seinen Kernkonzepten gehören Reaktionsdaten, Komponentierungen und virtuelle DOM. 2) In praktischen Anwendungen kann es durch den Aufbau von Todo -Anwendungen und die Integration von Vuerouter demonstriert werden. 3) Beim Debuggen wird empfohlen, VODEVTOOLS und CONSOLE.LOG zu verwenden. 4) Die Leistungsoptimierung kann durch V-IF/V-Show, Listen-Rendering-Optimierung, asynchrone Belastung von Komponenten usw. erreicht werden.

Vue.js und React: Verständnis der wichtigsten UnterschiedeVue.js und React: Verständnis der wichtigsten UnterschiedeApr 10, 2025 am 09:26 AM

Vue.js ist für kleine bis mittelgroße Projekte geeignet, während React eher für große und komplexe Anwendungen geeignet ist. 1. Vue.js 'Responsive System aktualisiert das DOM automatisch durch Abhängigkeitsverfolgung und erleichtert es, Datenänderungen zu verwalten. 2.React übernimmt einen Einweg-Datenfluss, und die Datenflüsse von der übergeordneten Komponente zur untergeordneten Komponente und liefern einen klaren Datenfluss und eine leicht zu debug-Struktur.

See all articles

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ßer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools