Ein Artikel, der ausführlich erklärt, wie man JSX in vue3 verwendet
Wie verwende ich JSX in
vue? Der folgende Artikel wird Ihnen die Verwendung von JSX in vue3 vorstellen. Ich hoffe, er wird Ihnen hilfreich sein!
In den meisten Fällen empfiehlt Vue die Verwendung der Vorlagensyntax <template>
zum Erstellen von Anwendungen. <template>
语法来创建应用。
在 Vue 3 的项目开发中,template 是 Vue 3 默认的写法。虽然 template 长得很像 HTML,但 Vue 其实会把 template 解析为 render 函数,之后,组件运行的时候通过 render 函数去返回虚拟 DOM。【学习视频分享:vue视频教程、web前端视频】
然而在某些使用场景下,我们真的需要用到 JavaScript 完全的编程能力。这时渲染函数就派上用场了。
h函数
Vue 提供了一个 h()
函数用于创建 vnodes虚拟dom。如下示例:
import { h } from 'vue' const vnode = h( 'div', // type { id: 'foo', class: 'bar' }, // props [ /* children */ ] )
在组件中如何使用呢?
之前当组合式 API 与模板一起使用时,setup()
钩子的返回值是用于暴露数据给模板。但是当使用h()
的时候,setup()
钩子返回的是渲染函数:
import { ref, h } from 'vue' export default { props: { /* ... */ }, setup(props) { const count = ref(1) // 返回渲染函数 return () => h('div', props.msg + count.value) } }
手写的 h 函数,可以处理动态性更高的场景。但是如果是复杂的场景,h 函数写起来就显得非常繁琐,需要自己把所有的属性都转变成对象。并且组件嵌套的时候,对象也会变得非常复杂。不过,因为 h 函数也是返回虚拟 DOM 的,所以有没有更方便的方式去写 h 函数呢?答案是肯定的,这个方式就是 JSX。
JSX
JSX 是 JavaScript 的一个类似 XML 的扩展,有了它,我们可以用简单方式来创建vnodes:
const vnode = <div id="app">hello</div>
这种在 JavaScript 里面写 HTML 的语法,就叫做 JSX,算是对 JavaScript 语法的一个扩展。上面的代码直接在 JavaScript 环境中运行时,会报错。JSX 的本质就是下面代码的语法糖。
const vnode = createVnode('div',{id:"app"}, 'hello')
其实h 函数内部也是调用 createVnode 来返回虚拟 DOM。
那么,如何在Vue项目中使用JSX呢?
默认的情况下,vue3+vite的项目不支持jsx,如果想支持jsx,需要安装插件@vitejs/plugin-vue-jsx
安装
npm i @vitejs/plugin-vue-jsx -D
在vite.config.js中进行配置:
import vueJsx from "@vitejs/plugin-vue-jsx"; // 配置vue使用jsx export default defineConfig({ plugins: [ vue(), vueJsx() ], });
然后就可以在Vue组件中使用了:
// render.vue <script> import { ref } from "vue"; export default { setup() { const count = ref(100); return () => <div>count is: {count.value}</div>; }, }; </script>
注意:script中lang要改成jsx。
或者是一个jsx文件:
// render.jsx import { defineComponent } from 'vue' export default defineComponent({ setup() { return () => <div>jsx文件</div> } })
Template vs JSX
我们该怎么选择 JSX 和 template 呢?
template优势:template 的语法是固定的,只有 v-if、v-for 等等语法。我们按照这种固定格式的语法书写,这样 Vue3 在编译层面就可以很方便地去做静态标记的优化,减少Diff过程。比如静态提升,类型标记,树结构打平等来提高虚拟 DOM 运行时性能。这也是 Vue 3 的虚拟 DOM 能够比 Vue 2 快的一个重要原因。
参考:Vue渲染机制
JSX优势:template 则因为语法限制原因,不能够像 JSX 那样可以支持更动态的需求。这也是 JSX 相比于 template 的一个优势。
JSX 相比于 template 还有一个优势,是可以在一个文件内返回多个组件。
那如何选择呢?
在实现业务需求的时候,优先使用 template,尽可能地利用 Vue 本身的性能优化。而对于动态性要求较高的组件可以使用 JSX 来实现。(比如后面,我会用JSX来实现动态表单生成器)
总结
首先,我们在项目中通常使用template模板来创建应用,template模板会在构建阶段被编译成render渲染函数。渲染函数就是用来返回虚拟DOM的函数。
那么我们其实可以跳过这个步骤,直接使用h函数来生成虚拟DOM。
h函数的内部执行的其实是createVNode函数来生成虚拟DOM的,但是由于h函数比较难写,所以我们使用JSX来更加方便快捷的书写。JSX的内部其实也是使用的createVNode函数。
JSX在JavaScript中是不能直接执行的,在vite项目中,我们需要安装插件@vitejs/plugin-vue-jsx
h-Funktion
🎜Vue bietet eineh()
-Funktion zum Erstellen virtueller Vnodes-Doms. Das folgende Beispiel: Wie verwende ich 🎜rrreee🎜 in Komponenten? 🎜🎜Früher wurde bei der Verwendung der Kompositions-API mit Vorlagen der Rückgabewert des setup()
-Hooks verwendet, um Daten für die Vorlage verfügbar zu machen. Bei Verwendung von h()
gibt der setup()
-Hook jedoch die Rendering-Funktion zurück: 🎜rrreee🎜Handgeschriebene h-Funktion, die verarbeitet werden kann Mehr dynamische Szenen. Wenn es sich jedoch um eine komplexe Szene handelt, ist das Schreiben der h-Funktion sehr umständlich und Sie müssen alle Attribute selbst in Objekte umwandeln. Und wenn Komponenten verschachtelt werden, werden die Objekte sehr komplex. Da die h-Funktion jedoch auch ein virtuelles DOM zurückgibt, gibt es eine bequemere Möglichkeit, die h-Funktion zu schreiben? Die Antwort lautet: Ja, der Weg ist JSX. 🎜JSX
🎜JSX ist eine XML-ähnliche Erweiterung von JavaScript. Damit können wir auf einfache Weise Vnodes erstellen: 🎜 rrreee 🎜Diese Syntax zum Schreiben von HTML in JavaScript heißt JSX und ist eine Erweiterung der JavaScript-Syntax. Wenn der obige Code direkt in der JavaScript-Umgebung ausgeführt wird, wird ein Fehler gemeldet. Die Essenz von JSX ist syntaktischer Zucker für den folgenden Code. 🎜rrreee🎜Tatsächlich wird createVnode auch innerhalb der h-Funktion aufgerufen, um das virtuelle DOM zurückzugeben. 🎜🎜Also, wie verwende ich JSX in einem Vue-Projekt? 🎜🎜Vue3+vite-Projekte unterstützen jsx standardmäßig nicht. Wenn Sie jsx unterstützen möchten, müssen Sie das Plug-in@vitejs/plugin-vue-jsx
installieren. 🎜rrreee🎜 in vite.config. Konfigurieren Sie in js: 🎜rrreee🎜 Dann können Sie es in der Vue-Komponente verwenden: 🎜rrreee🎜Hinweis: lang im Skript muss in jsx geändert werden. 🎜🎜Oder eine JSX-Datei: 🎜rrreee
Template vs. JSX
🎜Wie sollten wir JSX und Template auswählen? 🎜🎜Vorteile der Vorlage: Die Syntax der Vorlage ist festgelegt, nur die Syntax von v-if, v-for usw. Wir schreiben nach dieser festen Formatsyntax, sodass Vue3 statische Tags auf Kompilierungsebene problemlos optimieren und den Diff-Prozess reduzieren kann. Beispielsweise können statische Heraufstufung, Typ-Tags, Baumstrukturausgleich usw. die Laufzeitleistung des virtuellen DOM verbessern. Dies ist auch ein wichtiger Grund, warum das virtuelle DOM von Vue 3 schneller ist als das von Vue 2. 🎜🎜Referenz: Vue-Rendering-Mechanismus🎜🎜🎜JSX-Vorteil: Die Vorlage kann aufgrund von Syntaxbeschränkungen keine dynamischeren Anforderungen wie JSX unterstützen. . Dies ist auch ein Vorteil von JSX gegenüber Templates. 🎜🎜JSX hat gegenüber der Vorlage einen weiteren Vorteil: Es kann mehrere Komponenten in einer Datei zurückgeben. 🎜🎜Wie wählt man also aus? 🎜🎜Geben Sie bei der Umsetzung geschäftlicher Anforderungen Vorrang der Verwendung von Vorlagen und nutzen Sie so weit wie möglich die Vue-eigene Leistungsoptimierung. Komponenten mit höheren dynamischen Anforderungen können mit JSX umgesetzt werden. (Später werde ich beispielsweise JSX verwenden, um den dynamischen Formulargenerator zu implementieren.) 🎜
Zusammenfassung
🎜Zuallererst verwenden wir normalerweise Vorlage in unseren Projekten Um eine Anwendung zu erstellen, wird die Vorlage während der Build-Phase in die Render-Rendering-Funktion kompiliert. Die Rendering-Funktion ist eine Funktion zur Rückgabe des virtuellen DOM. 🎜🎜Dann können wir diesen Schritt tatsächlich überspringen und direkt die h-Funktion verwenden, um ein virtuelles DOM zu generieren. 🎜🎜Die interne Ausführung der h-Funktion ist eigentlich die createVNode-Funktion zum Generieren eines virtuellen DOM. Da die h-Funktion jedoch schwierig zu schreiben ist, verwenden wir JSX, um sie bequemer und schneller zu schreiben. Die Funktion createVNode wird tatsächlich intern in JSX verwendet. 🎜🎜JSX kann nicht direkt in JavaScript ausgeführt werden. Im Vite-Projekt müssen wir das Plug-in@vitejs/plugin-vue-jsx
🎜🎜 installieren und entsprechend konfigurieren. 🎜Abschließend vergleichen wir die Vor- und Nachteile von Template und JSX. Der Vorteil von Vorlagen besteht darin, dass ihre Syntax fest und einfach zu schreiben ist. Auf der Kompilierungsebene hat Vue3 viele Optimierungen für die Vorlagenkompilierung vorgenommen. Der Vorteil von JSX ist die Flexibilität. In einigen Fällen, in denen die dynamischen Anforderungen hoch sind, ist JSX zur Standardkonfiguration geworden.
Wie das Sprichwort sagt, gibt es in der Kunstbranche keine Spezialisierungen als die anderen. Sie haben jeweils ihre eigenen Vor- und Nachteile in unterschiedlichen Szenarien.
(Ende)
(Teilen von Lernvideos: Web-Front-End-Entwicklung, Einfaches Programmiervideo)
Das obige ist der detaillierte Inhalt vonEin Artikel, der ausführlich erklärt, wie man JSX in vue3 verwendet. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Sie können der VUE -Taste eine Funktion hinzufügen, indem Sie die Taste in der HTML -Vorlage an eine Methode binden. Definieren Sie die Methode und schreiben Sie die Funktionslogik in der VUE -Instanz.

Die Verwendung von Bootstrap in Vue.js ist in fünf Schritte unterteilt: Startstrap installieren. Bootstrap in main.js. Verwenden Sie die Bootstrap -Komponente direkt in der Vorlage. Optional: benutzerdefinierter Stil. Optional: Verwenden Sie Plug-Ins.

Es gibt drei Möglichkeiten, sich auf JS -Dateien in Vue.js zu beziehen: Geben Sie den Pfad direkt mit dem & lt; Skript & gt an. Etikett;; Dynamischer Import mit dem montierten () Lebenszyklushaken; und importieren über die Vuex State Management Library.

Mit der Watch -Option in Vue.js können Entwickler auf Änderungen in bestimmten Daten anhören. Wenn sich die Daten ändert, löst sich eine Rückruffunktion aus, um Aktualisierungsansichten oder andere Aufgaben auszuführen. Zu den Konfigurationsoptionen gehören unmittelbar, die festlegen, ob ein Rückruf sofort ausgeführt werden soll, und Deep, das feststellt, ob Änderungen an Objekten oder Arrays rekursiv anhören sollen.

VUE.JS hat vier Methoden, um zur vorherigen Seite zurückzukehren: $ router.go (-1) $ router.back () verwendet & lt; Router-Link to = & quot;/& quot; Komponentenfenster.history.back () und die Methodenauswahl hängt von der Szene ab.

Implementieren Sie Marquee/Text-Scrolling-Effekte in VUE unter Verwendung von CSS-Animationen oder Bibliotheken von Drittanbietern. In diesem Artikel wird die Verwendung von CSS -Animation vorgestellt: Bildlauftext erstellen und Text mit & lt; div & gt;. Definieren Sie CSS -Animationen und setzen Sie Überlauf: Versteckt, Breite und Animation. Definieren Sie Keyframes, setzen Sie Transformation: Translatex () am Anfang und am Ende der Animation. Passen Sie die Animationseigenschaften wie Dauer, Bildlaufgeschwindigkeit und Richtung an.

Pagination ist eine Technologie, die große Datensätze in kleine Seiten aufteilt, um die Leistung und die Benutzererfahrung zu verbessern. In VUE können Sie die folgende integrierte Methode zum Paging verwenden: Berechnen Sie die Gesamtzahl der Seiten: TotalPages () TRAVERSAL-Seitennummer: V-für Anweisung, um die aktuelle Seite festzulegen: aktuelle Seite

Sie können die Vue -Version mit Vue Devtools abfragen, um die Registerkarte VUE in der Konsole des Browsers anzuzeigen. Verwenden Sie NPM, um den Befehl "npm list -g vue" auszuführen. Suchen Sie das Vue -Element im Objekt "Abhängigkeiten" der Datei package.json. Führen Sie für Vue -CLI -Projekte den Befehl "Vue --version" aus. Überprüfen Sie die Versionsinformationen im & lt; Skript & gt; Tag in der HTML -Datei, die sich auf die VUE -Datei bezieht.
