vue.config.js ist eine optionale Konfigurationsdatei. Wenn diese Datei im Stammverzeichnis des Projekts vorhanden ist (auf derselben Ebene wie package.json), wird sie automatisch von @vue/cli-service geladen. Sie können das Vue-Feld auch in package.json verwenden, beachten Sie jedoch, dass Sie bei dieser Methode das JSON-Format strikt einhalten müssen. Vorwort Auch in tatsächlichen Projekten muss häufig optimiert werden. Insbesondere bei mittleren und großen Projekten ist es wichtig, die Paketgröße zu reduzieren und die Ladezeit des ersten Bildschirms zu erhöhen. Dies ist auch eine häufig gestellte Frage in Interviews. In diesem Artikel werde ich die Auswirkungen vor und nach der Konfiguration von vue.config.js und der Projektoptimierung vorstellen. vue.config.js-Konfigurationsoptionen Die Datei sollte ein Objekt mit Optionen exportieren Konfigurationsoptionen Hier sind einige häufig verwendete Konfigurationen:
Detaillierte Konfigurationsanweisungen finden Sie auf der offiziellen Website. Verpackungsoptimierung zur Reduzierung der VerpackungsgrößeNormale Verpackungen haben Standardkonfigurationen und die Verpackung kann ohne Änderungen erfolgreich sein, das Paket wird jedoch größer sein. Verwenden Sie das mit dem Vue-Scaffolding gelieferte Analysetool, um die Situation vor der Optimierung zu betrachten, und geben Sie in die Befehlszeile ein: Vue-Benutzeroberfläche Dies ist die Paketanalyse des Front-End-Teils meines eigenen Projekts Bild- und Videokomprimierung Sie können sehen, dass es drei Bild- und Videodateien gibt, die optimiert werden können. Unter ihnen wird MP4 vorübergehend ignoriert, da es schwierig ist, es zu komprimieren, um die Auflösung beizubehalten. Sie können Abhängigkeiten auch verwenden, um beim Kompilieren erneut zu komprimieren: image-webpack-loader ... chainWebpack: Konfiguration => { // Bild config.module komprimieren .rule('Bilder') .verwenden('image-webpack-loader') .loader('Bild-Webpack-Loader') .Optionen({ //{ bypassOnDebug: true } mozjpeg: { progressive: true, quality: 65 }, // JPEG-Bilder komprimieren optipng: { enabled: false }, // PNG-Bilder komprimieren pngquant: { Qualität: [0,65, 0,9], Geschwindigkeit: 4 }, // PNG-Bilder komprimieren gifsicle: { interlaced: false } // GIF-Bilder komprimieren // webp: { Qualität: 75 } // SVG-Bilder komprimieren }) .Ende() } ... JS-Code-KomprimierungCodekomprimierung erfordert Abhängigkeit: uglifyjs-webpack-plugin cnpm i -D muglifyjs-webpack-plugin Da beim Verpacken Leerzeichen verarbeitet werden, besteht der Zweck der Verwendung dieses Plugins darin, Konsolen und Kommentare in der Produktionsumgebung zu löschen. ... konfigurierenWebpack: { ... process.env.NODE_ENV === 'Produktion' ?neues UglifyJsPlugin({ hässlicheOptionen: { Ausgabe: { // Kommentare löschen comments: false }, komprimieren: { drop_console: wahr, drop_console: true //Konsolenanweisungen löschen // pure_funcs: ['console.log'] //Benutzerdefinierte Entfernungsfunktion} }, Quellkarte: false }) : () => {} ... } ,,, CDN-BeschleunigungBei der normalen Webpack-Verpackung wird eine Datei chunk-vendors.js generiert, ein Paket, das alle Module bündelt, die nicht seine eigenen sind, sondern von anderen Parteien stammen. Sie werden als Drittanbietermodule oder Anbietermodule bezeichnet. Das heißt, alle Module aus dem Verzeichnis project/node_modules. Wenn also immer mehr abhängige Module hinzugefügt werden und die Module größer werden, wird chunk-vendors.js immer größer. Wenn die von uns selbst erstellte Website auf dem Server veröffentlicht werden muss, damit andere sie verwenden können, wie können wir Ihren Benutzern dann den Zugriff auf Ihre Website beschleunigen?
Öffentliche Cloud-Anbieter verfügen über unzählige Rechenzentren und Server auf der ganzen Welt. Einfach ausgedrückt bedeuten CDN-Dienste, dass diese Anbieter die Dokumente auf Ihrem Server auf ihre Server in anderen Regionen verteilen. Einführung in CDN Importieren Sie die Adresse der von CDN bereitgestellten Drittanbieterbibliothek. Hier verweise ich auf mehrere wichtige und große Abhängigkeiten: <!-- public/index.html --> <script src="https://cdn.bootcss.com/vue/2.6.11/vue.min.js"></script> <script src="https://cdn.bootcss.com/vue-router/3.0.2/vue-router.min.js"></script> <script src="https://cdn.bootcss.com/vuex/3.5.1/vuex.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.21.1/axios.min.js"></script> <link rel="stylesheet" href="https://unpkg.com/[email protected]/lib/theme-chalk/index.css" rel="externes nofollow" > <script src="https://cdn.bootcss.com/element-ui/2.13.2/index.js"></script> <script src="https://unpkg.com/[email protected]/lib/index.js"></script> <script src="https://cdn.bootcss.com/echarts/5.0.2/echarts.min.js"></script> Importierte Bibliotheken hinzufügen Fügen Sie die abhängigen Bibliotheken hinzu, auf die vom CDN in vue.config.js verwiesen werden muss ... konfigurierenWebpack: { ... Äußerlichkeiten: { //Geben Sie das Format der zu mountenden Drittanbieterbibliothek an: Name der Drittanbieterbibliothek: ‚Alias der Bibliothek im Projekt‘ // Beachten Sie, dass der Element-UI-Alias nur ELEMENT verwenden kann, andernfalls wird „undefined“ angezeigt. vue: „Vue“, vuex: "Vuex", 'vue-router': 'VueRouter', axios: 'axios', echarts: 'echarts', 'element-ui': 'ELEMENT' }, ... } ... Kommentieren Sie die Stellen, an denen im Projekt Abhängigkeiten verwendet werden Tipp: Wenn das Projekt groß ist und viele Stellen kommentiert werden müssen, empfehle ich, zuerst die Datei package.json der aus dem CDN importierten Bibliothek zu löschen und dann das Projekt auszuführen. Es wird auf jeden Fall darauf hingewiesen, dass das Modul fehlt, und es wird dort kommentiert, wo es angezeigt wird, sodass es nichts auslässt. Mögliche Fehler Der Alias von element-ui kann nur auf „ELEMENT“ gesetzt werden. Beim Import auf Anfrage verwenden Sie ELEMENT.Message...error(...). Ich habe versucht, es zu ändern, aber es wird gemeldet, dass xxx nicht definiert ist. Vergleich großer Dateispeicherorte Vergleichen Sie die Verteilung großer Dateien vor und nach CDN Vor der CDN-Beschleunigung: Nach CDN-Beschleunigung: Die Dateigröße ist viel kleiner und es gibt grundsätzlich keine größeren Abhängigkeiten. Ergebnisse Im Vergleich dazu sind die Vorher- und Nachher-Effekte sehr offensichtlich Optimierung der Ladezeit des ersten BildschirmsDer obige Vorgang optimiert tatsächlich die Ladezeit des ersten Bildschirms, die Ladezeit des ersten Bildschirms kann jedoch noch weiter optimiert werden. Wenn nur die oben genannte Verpackungsoptimierung durchgeführt wird, wird die erste Bildschirmzeit verglichen: Durch die Nutzung eines CDN sind die Anforderungen gestiegen. Routing-Lazy-Loading-OptimierungDefinition Lazy Loading bedeutet einfach, dass das Laden von Routen verzögert wird oder Routen bei Bedarf geladen werden, d. h., sie werden geladen, wenn sie benötigt werden, und nicht, wenn sie nicht benötigt werden. Dies kann die Ladegeschwindigkeit der Projektwebseite beschleunigen. Gängige Implementierungsmethoden 1. Die asynchrone Vue-Komponente realisiert das verzögerte Laden von Routen component:resolve=>(['Adresse der zu ladenden Route', resolve]) 2. Von es vorgeschlagener Import (empfohlen) // In den folgenden beiden Codezeilen wird webpackChunkName nicht angegeben und jede Komponente wird in eine js-Datei gepackt. const Index = () => import('@/components/index') const Über = () => import('@/components/about') */ // Die folgenden 3 Codezeilen geben denselben webpackChunkName an und werden kombiniert und in einer JS-Datei gepackt. Komponenten in Gruppen aufteilen const Home = () => import(/* webpackChunkName: 'visualization' */ '@/components/home') const Index = () => import(/* webpackChunkName: 'Visualisierung' */ '@/components/index') const About = () => import(/* webpackChunkName: 'Visualisierung' */ '@/components/about') Am Beispiel der Verpackung meines Projekts: Ohne Angabe von webpackChunkName enthält der gepackte js-Ordner 17 Dateien Nachdem zwei Seitenrouten als derselbe WebpackChunkName angegeben wurden, gibt es nur 16 entpackte Ordner Der Grund dafür ist, dass derselbe webpackChunkName kombiniert und in eine JS-Datei gepackt wird Optimierung der GZIP-Komprimierung Vereinfacht ausgedrückt komprimiert gzip Dateien nach dem Verpacken, um sie kleiner und schneller übertragbar zu machen. Der Effekt ist, dass beim Anklicken einer URL der entsprechende Inhalt schnell angezeigt wird. Allerdings unterstützt nicht jeder Browser gzip. Wenn Sie wissen möchten, ob der Client gzip unterstützt, gibt es im Anforderungsheader ein Accept-Encoding, das die Unterstützung für Komprimierung anzeigt. Der HTTP-Anforderungsheader des Clients deklariert die vom Browser unterstützte Komprimierungsmethode, und der Server konfiguriert die zu aktivierende Komprimierung, den komprimierten Dateityp und die Komprimierungsmethode. Wenn der Client eine Anfrage an den Server stellt, analysiert der Server den Anfrageheader. Wenn der Client die GZIP-Komprimierung unterstützt, wird die angeforderte Ressource komprimiert und als Antwort an den Client zurückgegeben. Der Browser analysiert sie auf seine eigene Weise. Im HTTP-Antwortheader sehen wir content-encoding:gzip, was bedeutet, dass der Server die GZIP-Komprimierung verwendet. Aktivieren Sie GZIP auf dem Frontend Hierfür wird ein Plugin benötigt: compression-webpack-plugin npm installiere Komprimierungs-Webpack-Plugin Legen Sie es in vue.config.js fest. konfigurierenWebpack: { ... neues KompressionsPlugin({ Dateiname: '[Pfad].gz[Abfrage]', Algorithmus: "gzip", Test: /\.js$|\.html$|\.css/, Schwellenwert: 10240, // Es werden nur Ressourcen verarbeitet, die größer als dieser Wert sind 10240 minRatio: 0.8, // Es werden nur Ressourcen mit einer niedrigeren Komprimierungsrate als dieser Wert verarbeitet // Lösche die Originaldatei // Wenn du sie in einer Entwicklungsumgebung verwenden möchtest, setze sie auf false, sonst öffnet sich die Seite nach der Bearbeitung nicht // Wenn du sie in einer Produktionsumgebung verwenden möchtest, setze sie auf true, damit die gepackte Größe kleiner ist deleteOriginalAssets: false }), ... } ,,, // gzip-Komprimierung Aktivieren Sie die GZIP-Komprimierung in nginx auf dem Server Überprüfen Sie, ob die GZIP-Komprimierung erfolgreich aktiviert wurde Verweise Dokumentation zur Vue-Projektoptimierung Dies ist das Ende dieses Artikels über vue2.x von der Konfiguration von vue.config.js bis zur Projektoptimierung. Weitere relevante Inhalte zur Vue-Projektoptimierung finden Sie in den vorherigen Artikeln von 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:
|
<<: Erläuterung der Installation und Konfiguration zum Erstellen einer Go-Umgebung unter Linux
>>: Master-Slave-Konfiguration für die synchrone Replikation einer MySQL-Datenbank unter Linux
Detailliertes Beispiel für das Datenbankbetriebso...
1. Parallelität Die wichtigste Funktion einer OLT...
Vorwort Dieser Artikel stellt hauptsächlich den r...
Vorwort Die sogenannte Fuzzy-Abfrage dient dazu, ...
Vorwort Wie wir alle wissen, ist in Linux alles e...
Inhaltsverzeichnis Vorne geschrieben Was genau is...
1. Erstellen Sie eine Seite mit app.json Gemäß un...
/**************************** * Systemaufruf*****...
Inhaltsverzeichnis Vorwort && Operator ||...
verwenden Flexible Boxen spielen beim Front-End-L...
Redis verwendet das Apline-Image (Alps) von Redis...
Inhaltsverzeichnis Überblick 1. Test auf Nullwert...
selinux ( Security-Enhanced Linux) ist ein Linux-...
Gehen Sie zu https://dev.mysql.com/downloads/mysq...
Schauen Sie sich den Code an: Code kopieren Der Co...