Ich habe kürzlich über Vue gelesen. Ich habe eine Einzeldateikomponente gefunden, die ich vorher grundsätzlich übersehen hatte. Einzeldateikomponenten in Vue.js ermöglichen, den gesamten Inhalt einer Komponente in einer einzigen Datei zu definieren. Das heißt, wenn wir eine Seite oder eine Komponente bündeln möchten, kann diese Einzeldateikomponente von Vue dies tun. Auf der offiziellen Website von Vue heißt es: „In vielen Vue-Projekten verwenden wir app.component, um globale Komponenten zu definieren, und verwenden dann app.mount('#app'), um auf jeder Seite ein Containerelement anzugeben.“ Die Komponenten sind hier relativ einfach, aber dieser Ansatz funktioniert bei komplexeren Projekten nicht. Hier sind die Gründe:
All dies kann mit Einzeldateikomponenten mit der Erweiterung .vue und unter Verwendung von Build-Tools wie webpack oder Browserify gelöst werden. Bauennpm install -D @vue/compiler-sfc Geben Sie den obigen Code in der Konsole ein, dann werden ein Ordner und eine weitere JSON-Datei angezeigt. wie folgt: Wenn wir eine Einzeldateikomponente erstellen möchten, müssen wir die Datei selbst erstellen. Gleichzeitig müssen Sie über ein gewisses Verständnis von webpack verfügen. Diese Dateien sind eigentlich einfache Versionen von Vue. Eine einfache Version der Datei hello.vue kann beispielsweise wie folgt aussehen Daraus lässt sich erkennen: Es besteht aus drei Teilen. Der Vorlagenteil ist unverzichtbar und die anderen beiden Teile, Stil und Skript, können ignoriert werden. Manche Freunde möchten vielleicht verschiedene Module trennen, was in der Vue-Dokumentation als Trennung der Belange bezeichnet wird. Das spielt keine Rolle, Sie können diese Dokumente aufteilen, CSS und JS in eine andere Datei trennen und sie dann in die Komponente importieren. wie folgt: <!-- meine-Komponente.vue --> <Vorlage> <div>Dies wird vorkompiliert</div> </Vorlage> <script src="./meine-komponente.js"></script> <style src="./meine-komponente.css"></style> Das Projektverzeichnis sieht wie folgt aus: Unter ihnen index.html <!DOCTYPE html> <html lang="de"> <Kopf> <meta charset="utf-8" /> <title>Vue Simple Todo App mit SFC</title> <Link rel="Stilblatt" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css" rel="externes Nofollow" rel="externes Nofollow" /> <link rel="stylesheet" href="/dist/main.css" rel="externes Nofollow" rel="externes Nofollow" /> </Kopf> <Text> <div id="app"></div> <script src="/dist/main.js"></script> </body> </html> Paket.json { "privat": wahr, "Skripte": { "dev": "webpack-dev-server", "Build": "webpack --env.prod" }, "Abhängigkeiten": { "vue": "^3.1.1" }, "devAbhängigkeiten": { "@vue/compiler-sfc": "^3.1.1", "css-loader": "^3.5.2", "Dateilader": "^6.0.0", "mini-css-extrakt-plugin": "^0.9.0", "Stift": "^0.54.7", "Stift-Loader": "^3.0.2", "URL-Loader": "^4.1.0", "vue-loader": "^16.0.0-alpha.3", "vue-style-loader": "^4.1.2", "webpack": "^4.42.1", "webpack-cli": "^3.3.11", "webpack-dev-server": "^3.10.3" }, "Schlüsselwörter": ["todo", "vue"], "Name": "Vue-Todo-List-App mit Einzeldateikomponente", „Beschreibung“: „Eine einfache To-Do-Listen-Anwendung, geschrieben in Vue mit Single File Component (SFC)-Unterstützung.“ } webpack.config.js const path = require("Pfad"); const { VueLoaderPlugin } = erfordern("vue-loader"); const MiniCssExtractPlugin = erfordern("mini-css-extract-plugin"); modul.exports = (env = {}) => ({ Modus: env.prod ? "Produktion" : "Entwicklung", devtool: env.prod ? "Quell-Map" : "billiges-Modul-Eval-Quell-Map", Eintrag: [ env.prod? false: require.resolve(`webpack-dev-server/client`), Pfad.auflösen(__dirname, "./src/main.js") ].filter(Boolean), Ausgabe: { Pfad: Pfad.resolve(__dirname, "./dist"), öffentlicher Pfad: "/dist/" }, lösen: { Alias: { // das ist technisch nicht nötig, da der Standard-`vue`-Eintrag für Bundler // ist ein einfacher `export * from '@vue/runtime-dom`. Allerdings mit diesem // zusätzlicher erneuter Export führt irgendwie dazu, dass Webpack das Modul immer ungültig macht // beim ersten HMR-Update und bewirkt ein Neuladen der Seite. vue: "@vue/runtime-dom" } }, Modul: { Regeln: { Test: /\.vue$/, verwenden: „vue-loader“ }, { Prüfung: /\.png$/, verwenden: { Lader: "URL-Lader", Optionen: { Limit: 8192 } } }, { Test: /\.css$/, verwenden: [ { Lader: MiniCssExtractPlugin.loader, Optionen: { hmr: !env.prod } }, "CSS-Loader" ] }, { Test: /\.stylus$/, verwenden: ["vue-style-loader", "css-loader", "stylus-loader"] }, { Test: /\.pug$/, Lader: „pug-plain-loader“ } ] }, Plugins: [ neues VueLoaderPlugin(), neues MiniCssExtractPlugin({ Dateiname: "[name].css" }) ], devServer: { inline: wahr, heiß: wahr, Statistiken: "minimal", contentBase:__dirname, Overlay: wahr, injectClient: falsch, disableHostCheck: true } }); test.html <!DOCTYPE html> <html lang="de"> <Kopf> <meta charset="utf-8" /> <title>Vue Simple Todo App mit SFC</title> <Link rel="Stilblatt" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css" rel="externes Nofollow" rel="externes Nofollow" /> <link rel="stylesheet" href="/dist/main.css" rel="externes Nofollow" rel="externes Nofollow" /> </Kopf> <Text> <div id="app222">Testseiten</div> <script src="/dist/main.js"></script> </body> </html> Es gibt drei Dateien im src-Ordner, App.vue main.js und TodoItem.vue Wo: App.vue <Vorlage> <div Klasse="Wrapper"> <h1>Meine To-do-Liste</h1> <form @submit.prevent="addTodo"> <input type="text" name="todo-text" v-model="newTodoText" placeholder="Neue Aufgabe"> </form> <ul v-if="alle.Länge"> <TodoItem v-for="todo in todos" :key="todo.id" :todo="todo" @remove="removeTodo"/> </ul> <p class="none" v-else>Nichts mehr in der Liste. Fügen Sie in der Eingabe oben eine neue Aufgabe hinzu.</p> </div> </Vorlage> <Skript> importiere TodoItem aus "./TodoItem.vue" let nextTodoId = 1 const createTodo = text => ({ Text, ID: nächsteTodoId++ }) Standard exportieren { Komponenten: Aufgabenelement }, Daten() { zurückkehren { alle Aufgaben: createTodo("Vue lernen"), createTodo("Erfahren Sie mehr über Einzeldateikomponenten"), createTodo("Sich verlieben ❤️") ], neuerTodoText: "" } }, Methoden: { addTodo() { const trimmedText = this.newTodoText.trim() wenn (getrimmterText) { dies.todos.push(createTodo(getrimmterText)) } this.newTodoText = "" }, entferneTodo(Element) { dies.todos = dies.todos.filter(todo => todo !== Element) } } } </Skript> <style lang="stylus"> *, *::vorher, *::nachher Box-Größe, Rahmen-Box html, Text Schriftart 16px/1.2 BlinkMacSystemFont, -apple-system, „Segoe UI“, Roboto, Helvetica, Arial, serifenlos Polsterung 10px .Verpackung Breite 75% Rand 0 automatisch bilden Rand unten 20px Eingabe [Typ = "Text"] Breite 100% Polsterung 10px Rand 1px durchgezogen #777 ul, li Rand 0 Polsterung 0 p.keine Farbe #888 Schriftgröße klein </Stil> Haupt-JS importiere { createApp } von 'vue' App aus „./App.vue“ importieren erstelleApp(App).mount('#app') TodoItem.vue <Vorlage> <li> <span>{{ todo.text }}</span> <button @click.prevent="$emit('remove', todo)">Entfernen</button> </li> </Vorlage> <Skript> Standard exportieren { Requisiten: { zu tun: { erforderlich: wahr, Typ: Objekt } } } </Skript> <style lang="Stylus" scoped> li Anzeigeflex Rand 5px 0 Spanne Flexion 1 Taste Rand 1px durchgehend orange Hintergrund orange Farbe weiß Schriftgröße 0,8rem Polsterung 2px 4px Cursorzeiger &:schweben Rahmenfarbe #ff8100 Hintergrund #ff8100 </Stil> Hinweis <br /> Wenn Sie nicht wissen, wie Sie Webpack verwenden, wird empfohlen, den Anweisungen auf der offiziellen Website zu folgen und das Vue-Gerüst zum Installieren grundlegender Tools zu verwenden. Eigentlich glaube ich, dass diese Einzeldateikomponente schon jetzt wenig Nutzen bringt. Sofern es sich nicht um ein reines JS-Projekt handelt und die verwendeten Bibliotheken und Komponenten sehr alt sind, wird die Verwendung dieser Einzeldateikomponente zum Entwickeln neuer Funktionen gute Ergebnisse erzielen, vorausgesetzt, Sie sind mit Vue vertraut. Gleichzeitig empfehle ich Ihnen, Webpack zu lernen. Ich weiß nichts über Bable und versuche dann, das Projekt über Node zu starten. Tatsächlich kann die Verwendung einer Datei zum Verwalten von HTML/CSS/JavaScript in Ebenen und deren Zusammenführung in einer Datei dazu führen, dass unser Projekt organisierter und standardisierter aussieht. Denn in unserer jq-Ära wird CSS oft mit HTML vermischt und ein einfaches Klickereignis erfordert eine Trennung. Diese Erfahrung ist sicherlich nicht so klar wie die „Schichtverwaltung“. Quellen: Dies ist das Ende dieses Artikels über die Implementierung von Vue-Einzeldateikomponenten. Weitere relevante Inhalte zu Vue-Einzeldateikomponenten finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Tutorial zur Docker-Installation in einer Linux-Umgebung
>>: Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.15 WinX64 unter Windows
1. Verwendung von Pseudonymen Mit dem Alias-Befeh...
Was ist Serdel userdel ist ein Low-Level-Tool zum...
Vorwort: Im MySQL-System gibt es viele verschiede...
Das obere Bild zeigt die Systemzeit und das unter...
Wie können Sie in MySQL die Berechtigungen anzeig...
Box-Größe in CSS3 (Inhaltsbox und Rahmenbox) Mit ...
Vorwort Workbench ist auf einem Computer installi...
Der Befehl „Bash History“ im Linux-System hilft d...
Vertreter / egrep Syntax: grep [-cinvABC] 'wo...
http://www.cppcns.com/shujuku/mysql/283231.html S...
Inhaltsverzeichnis Vorwort Kurzübersicht: JavaScr...
1. Welche drei Formate? Dies sind: gif, jpg und pn...
1: Durchsatz (Anfragen pro Sekunde) Eine quantita...
1. CLion herunterladen, installieren und aktivier...
<br />Dieses Tutorial zur Erstellung von Web...