


Probleme im Zusammenhang mit der Webpack3-Geschwindigkeitsoptimierung in vue-cli
Dieser Artikel stellt hauptsächlich die detaillierte Erklärung des Webpack3-Aufbaus und der umfassenden Beschleunigungsoptimierung vor. Jetzt teile ich ihn mit Ihnen und gebe Ihnen eine Referenz.
Vorwort
Mit der Globalisierung von Vue wurden verschiedene Vue-Komponenten-Frameworks immer perfekter, von der frühen Element-UI über Vux, Iview bis hin zu immer hochwertigeren Projekten Vue für die Front-End-Konstruktion ist bereits eine technische, modulare und agile Sache.
Darunter glaube ich, dass viele Leute die offizielle Vue-CLI-Initialisierungsprojektvorlage wählen und dann einen Drittanbieter zum Entwickeln und Erstellen einführen werden Ich persönlich kann diesen Ansatz nur wärmstens empfehlen. Allerdings ist die von vue-cli initialisierte Projektvorlage schließlich für alle Entwickler gedacht und es wird gewisse Kompromisse hinsichtlich der Kompatibilität geben. Ich glaube, viele Leute haben nach verschiedenen Artikeln zur Webpack-Build-Optimierung gesucht, aber viele davon sind entweder zu alt oder nicht streng
Dieser Artikel hofft, ein Gleichgewicht zwischen zeitaufwändiger Optimierung und Verbesserung der Build-Leistung zu finden, d. h. Verbringen Sie möglichst wenig Zeit, nehmen Sie nur minimale Änderungen an der offiziellen Vorlage vor und erzielen Sie die maximale Verbesserung der Build-Leistung
Ideen
Frühe Versionen von vue-cli und webpack2 waren Im Internet verbreitete sich die folgende optimierte Konfiguration, aber tatsächlich müssen die neuen Versionen von vue-cli und webpack3 nicht mehr ParallelUglifyPlugin verwenden, um UglifyPlugin zu ersetzen (die neue Version von UglifyPlugin unterstützt und ermöglicht bereits standardmäßig die parallele Multithread-Konstruktion, also Dieser Schritt ist nicht erforderlich)
Scope Hoisting von webpack3 aktivieren (die neue Version von vue-cli wurde mit webapck3 konfiguriert und diese Konfiguration wurde standardmäßig aktiviert)
Alias gut nutzen (die neue Version von vue-cli hat dies bereits getan)
Konfigurieren Sie CommonsChunkPlugin zum Extrahieren von öffentlichem Code (die neue Version von vue -cli hat dies bereits getan)
Für die neue Version von vue-cli und webpack3 kann die folgende einfache Konfiguration die Build-Geschwindigkeit nach der Optimierung um mindestens das Zweifache erhöhen
Referenz auf Anfrage
Happypack-Multi-Core-Build-Projekt aktivieren
-
Quellkartenkonfiguration ändern
Vorkompilierte DllPlugin- und DllReferencePlugin-Bibliotheksdateien aktivieren
- Üben
Referenz auf Anfrage
1.1 Fast alle Komponenten-Frameworks von Drittanbietern bieten eine On-Demand-Referenzmethode für Komponenten, am Beispiel von iview. Mithilfe des Plug-Ins babel-plugin-import können Komponenten geladen werden Sie müssen nur die .babelrc-Datei npm install babel-plugin-import --save-dev
// .babelrc
{
"plugins": [["import", {
"libraryName": "iview",
"libraryDirectory": "src/components"
}]]
}
1.2 ändern und dies dann bei Bedarf tun. Durch die Einführung von Komponenten kann die Größe reduziert werden
import { Button } from 'iview' Vue.component('Table', Table)2. Aktivieren Sie das Happypack-Multi-Core-Build-Projekt
Ändern Sie nach der Installation von Happypack /build/webpack.base.conf.js. Die Datei kann npm install happypack --save-dev
// /build/webpack.base.conf.js
const HappyPack = require('happypack')
const os = require('os')
const happyThreadPool = HappyPack.ThreadPool({ size: os.cpus().length })
// 增加HappyPack插件
plugins: [
new HappyPack({
id: 'happy-babel-js',
loaders: ['babel-loader?cacheDirectory=true'],
threadPool: happyThreadPool,
})
]
// 修改引入loader
{
test: /\.js$/,
// loader: 'babel-loader',
loader: 'happypack/loader?id=happy-babel-js', // 增加新的HappyPack构建loader
include: [resolve('src'), resolve('test')]
}
3.1 Ändern Sie zuerst die Datei /config/index.js // /config/index.js
dev环境:devtool: 'eval'(最快速度)
prod环境:productionSourceMap: false(关闭source-map)
3.2 Ändern Sie dann die Datei /src/main.js und deaktivieren Sie die Debugging-Informationen der Produktionsumgebung
// /src/main.js const isDebug_mode = process.env.NODE_ENV !== 'production' Vue.config.debug = isDebug_mode Vue.config.devtools = isDebug_mode Vue.config.productionTip = isDebug_mode4. Aktivieren Sie die vorkompilierten Bibliotheksdateien DllPlugin und DllReferencePlugin
Dies ist der komplizierteste und effektivste Schritt. Der offensichtliche Schritt besteht darin, die Bibliothek eines Drittanbieters zu kompilieren und zu packen Dateien müssen nicht einmal separat kompiliert und für nachfolgende Builds gepackt werden 4.1 Fügen Sie die Datei build/webpack.dll.config.js hinzu und fügen Sie sie hinzu. Konfigurieren Sie Module, die eine separate DLL erfordern
const path = require("path") const webpack = require("webpack") module.exports = { // 你想要打包的模块的数组 entry: { vendor: ['vue/dist/vue.esm.js', 'axios', 'vue-router', 'iview'] }, output: { path: path.join(__dirname, '../static/js'), // 打包后文件输出的位置 filename: '[name].dll.js', library: '[name]_library' }, plugins: [ new webpack.DllPlugin({ path: path.join(__dirname, '.', '[name]-manifest.json'), name: '[name]_library', context: __dirname }), // 压缩打包的文件 new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false } }) ] }
4.2 Fügen Sie die folgenden Plug-Ins in build/webpack.dev.conf.js und build/webpack.prod.conf.js hinzu
new webpack.DllReferencePlugin({ context: __dirname, manifest: require('./vendor-manifest.json') })
4.3 in /package Befehl hinzufügen
"dll": "webpack --config ./build/webpack.dll.config.js"
4.4 DLL JS-Einführung in /index.html hinzufügen (muss zuerst eingeführt werden)
<script src="/static/js/vendor.dll.js"></script>
4.5 Build ausführen
npm run dll(这一步会生成build/vendor-manifest.json和static/js/vendor.dll.js) npm run dev 或 npm run buildPostscript
Nachdem die oben genannten vier Hauptschritte abgeschlossen sind, haben wir die Optimierung und Verbesserung der Vue-CLI-Vorlagenprojektkonstruktion abgeschlossen. Obwohl es immer noch nicht einfach zu sein scheint, ist dies bereits die einfachste Optimierung wurde entwickelt, weil ich der Meinung bin, dass zu viel optimierte Konfiguration von geringer Bedeutung ist, aber zu viel Redundanz und Komplexität in das Projekt mit sich bringt Der Konstruktionseffekt des tatsächlichen Tests der oben genannten Konfiguration wurde gegenüber dem reduziert ursprünglich 13 Sekunden bis etwa 6 Sekunden, und die Hot-Bereitstellung dauert sogar Millisekunden
Das Wichtigste ist, dass die einfachste Konfiguration auch verwendet werden kann, nachdem vue-cli und Webpack in Zukunft auf neue Versionen aktualisiert wurden Es ist einfach, es neu zu konfigurieren und zu verwenden. Die Wiederherstellung der Konfiguration dauert nur etwa 5 Minuten. Wenn Sie 5 Minuten für die Änderung der Konfiguration aufwenden, kann dies die Geschwindigkeit jedes Builds um mehr als das Zweifache erhöhen Ist es ein bisschen klein? Aufgeregt :)
Lassen Sie mich hier noch ein paar Worte sagen. Tatsächlich ist das Upgrade von Webpack2 auf Webpack3 für mich ziemlich enttäuschend, da es das Problem der übermäßig komplexen Konfiguration immer noch nicht löst. Da das Ziel darin besteht, dass das Produkt, das alle Webprojekte auf der ganzen Welt dominiert, mehr aus der Perspektive der Benutzerfreundlichkeit/Menschlichkeit betrachtet werden sollte
Jedes Mal, wenn ich mir die verschiedenen .babelrc, .postcssrc.js im Webpack ansehe Projekt ... Es gibt auch verschiedene .conf-Dateien und sogar verschiedene Haupt-, Index- und App-Dateien. Ich kann nicht anders, als mich darüber zu beschweren, warum sich die Front-End-Konstruktion in einem guten Projekt so entwickelt hat Sind mehrere Konfigurationsdateien wirklich notwendig? Ich dachte ursprünglich, dass webpack3 das alles einfacher machen würde, aber das war nicht der Fall. Da es jedoch vorerst keine Möglichkeit gibt, dies zu ändern, können wir die Prinzipien so gut wie möglich verstehen und unser Bestes geben, um sie zu vereinfachen. optimieren
Das Obige habe ich für Sie zusammengestellt und hoffe, dass es Ihnen in Zukunft hilfreich sein wird.
Verwandte Artikel:
Verwenden Sie die benutzerdefinierte js-Trimmfunktion, um Leerzeichen an beiden Enden zu entfernen
Alle auswählen und Auswahl in Vue umkehren
Detaillierte Erklärung der Verwendung von Jest zum Testen nativer React-Komponenten
Alle Implementierungen auswählen Daten in Vue-Bindung und -Erfassung
Zeit-Plugin in Mint-UI verwenden und Auswahlwert erhalten
VUE2 realisiert sekundäre Provinz- und Stadtverknüpfung Auswahl
Das obige ist der detaillierte Inhalt vonProbleme im Zusammenhang mit der Webpack3-Geschwindigkeitsoptimierung in vue-cli. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Ja, der Motorkern von JavaScript ist in C. 1) Die C -Sprache bietet eine effiziente Leistung und die zugrunde liegende Steuerung, die für die Entwicklung der JavaScript -Engine geeignet ist. 2) Die V8-Engine als Beispiel wird sein Kern in C geschrieben, wobei die Effizienz und objektorientierte Eigenschaften von C kombiniert werden.

JavaScript ist das Herzstück moderner Websites, da es die Interaktivität und Dynamik von Webseiten verbessert. 1) Es ermöglicht die Änderung von Inhalten, ohne die Seite zu aktualisieren, 2) Webseiten durch DOMAPI zu manipulieren, 3) Komplexe interaktive Effekte wie Animation und Drag & Drop, 4) die Leistung und Best Practices optimieren, um die Benutzererfahrung zu verbessern.

C und JavaScript erreichen die Interoperabilität durch WebAssembly. 1) C -Code wird in das WebAssembly -Modul zusammengestellt und in die JavaScript -Umgebung eingeführt, um die Rechenleistung zu verbessern. 2) In der Spieleentwicklung kümmert sich C über Physik -Engines und Grafikwiedergabe, und JavaScript ist für die Spiellogik und die Benutzeroberfläche verantwortlich.

JavaScript wird in Websites, mobilen Anwendungen, Desktop-Anwendungen und serverseitigen Programmierungen häufig verwendet. 1) In der Website -Entwicklung betreibt JavaScript DOM zusammen mit HTML und CSS, um dynamische Effekte zu erzielen und Frameworks wie JQuery und React zu unterstützen. 2) Durch reaktnatives und ionisches JavaScript wird ein plattformübergreifendes mobile Anwendungen entwickelt. 3) Mit dem Elektronenframework können JavaScript Desktop -Anwendungen erstellen. 4) Node.js ermöglicht es JavaScript, auf der Serverseite auszuführen und unterstützt hohe gleichzeitige Anforderungen.

Python eignet sich besser für Datenwissenschaft und Automatisierung, während JavaScript besser für die Entwicklung von Front-End- und Vollstapel geeignet ist. 1. Python funktioniert in Datenwissenschaft und maschinellem Lernen gut und unter Verwendung von Bibliotheken wie Numpy und Pandas für die Datenverarbeitung und -modellierung. 2. Python ist prägnant und effizient in der Automatisierung und Skripten. 3. JavaScript ist in der Front-End-Entwicklung unverzichtbar und wird verwendet, um dynamische Webseiten und einseitige Anwendungen zu erstellen. 4. JavaScript spielt eine Rolle bei der Back-End-Entwicklung durch Node.js und unterstützt die Entwicklung der Vollstapel.

C und C spielen eine wichtige Rolle in der JavaScript -Engine, die hauptsächlich zur Implementierung von Dolmetschern und JIT -Compilern verwendet wird. 1) C wird verwendet, um JavaScript -Quellcode zu analysieren und einen abstrakten Syntaxbaum zu generieren. 2) C ist für die Generierung und Ausführung von Bytecode verantwortlich. 3) C implementiert den JIT-Compiler, optimiert und kompiliert Hot-Spot-Code zur Laufzeit und verbessert die Ausführungseffizienz von JavaScript erheblich.

Die Anwendung von JavaScript in der realen Welt umfasst Front-End- und Back-End-Entwicklung. 1) Zeigen Sie Front-End-Anwendungen an, indem Sie eine TODO-Listanwendung erstellen, die DOM-Operationen und Ereignisverarbeitung umfasst. 2) Erstellen Sie RESTFUFFUPI über Node.js und express, um Back-End-Anwendungen zu demonstrieren.

Zu den Hauptanwendungen von JavaScript in der Webentwicklung gehören die Interaktion der Clients, die Formüberprüfung und die asynchrone Kommunikation. 1) Dynamisches Inhaltsaktualisierung und Benutzerinteraktion durch DOM -Operationen; 2) Die Kundenüberprüfung erfolgt vor dem Einreichung von Daten, um die Benutzererfahrung zu verbessern. 3) Die Aktualisierung der Kommunikation mit dem Server wird durch AJAX -Technologie erreicht.


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

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung
