Heim Web-Frontend js-Tutorial So implementieren Sie die Optimierung der Webpack2-Projektverpackung in vue-cli

So implementieren Sie die Optimierung der Webpack2-Projektverpackung in vue-cli

Jun 07, 2018 pm 02:15 PM
vue-cli 优化 打包

Jetzt werde ich mit Ihnen einen Artikel über die Optimierung der Vue-Cli-Webpack2-Projektverpackung teilen, der einen guten Referenzwert hat und ich hoffe, dass er für alle hilfreich sein wird.

Dateisuchumfang reduzieren

Resolve.modules konfigurieren

Resolve.modules des Webpacks konfigurieren Speicherort der Modulbibliothek (d. h. node_modules) Wenn import 'vue' in js erscheint, der kein relativer oder absoluter Pfad ist, wird er im Verzeichnis node_modules gefunden. Die Standardkonfiguration wird jedoch durch eine aufwärts gerichtete rekursive Suche gefunden. Normalerweise befindet sich jedoch nur ein Knotenmodul im Projektstammverzeichnis. Um den Suchbereich zu reduzieren, können Sie den vollständigen Pfad direkt angeben node_modules; ähnlich für Aliase (Das Gleiche gilt für die Konfiguration von „alias“):

function resolve (dir) {
 return path.join(__dirname, '..', dir)
}
module.exports = {
 resolve: {
 extensions: ['.js', '.vue', '.json'],
 modules: [
  resolve('src'),
  resolve('node_modules')
 ],
 alias: {
  'vue$': 'vue/dist/vue.common.js',
  'src': resolve('src'),
  'assets': resolve('src/assets'),
  'components': resolve('src/components'),
  // ...
  'store': resolve('src/store')
 }
 },
 ...
}
Nach dem Login kopieren

Test & include & exclude angemessen festlegen

test: Bedingungen, die erfüllt sein müssen erfüllt (regulärer Ausdruck, keine Anführungszeichen hinzufügen, passende zu verarbeitende Dateien)

exclude: Bedingungen, die nicht erfüllt werden können (Verzeichnisse ausschließen, die nicht verarbeitet werden)

include: Der Pfad oder das Dateiarray dass die importierte Datei vom Loader konvertiert wird (zu verarbeitende Verzeichnisse sind enthalten)

Dadurch können unnötige Traversierungen und damit Leistungseinbußen reduziert werden.

Codekomprimierungstool ersetzen

Das von Webpack standardmäßig bereitgestellte UglifyJS-Plug-in ist aufgrund der Single-Thread-Komprimierung langsam;

webpack-parallel -uglify- Das Plugin-Plugin kann das UglifyJS-Plugin parallel ausführen, wodurch die CPU-Ressourcen umfassender und sinnvoller genutzt werden, was die Erstellungszeit erheblich verkürzen kann

Natürlich sollte das Plugin in der Produktionsumgebung verwendet werden Gehen Sie nach der Installation des Plugins wie folgt vor:

// 删掉webpack提供的UglifyJS插件
// new webpack.optimize.UglifyJsPlugin({
// compress: {
//  warnings: false,
//  drop_console: true
// },
// sourceMap: true
// }),
// 增加 webpack-parallel-uglify-plugin来替换
const ParallelUglifyPlugin = require('webpack-parallel-uglify-plugin');
new ParallelUglifyPlugin({
 cacheDir: '.cache/', // 设置缓存路径,不改动的调用缓存,第二次及后面build时提速
 uglifyJS:{
 output: {
  comments: false
 },
 compress: {
  warnings: false
 }
 }
})
Nach dem Login kopieren

habe auch den gleichen Plug-in-Typ webpack-uglify-parallel ausprobiert, aber er war nicht so effektiv wie webpack-parallel-uglify -plugin (es kann von Projekt zu Projekt variieren, Sie können es zum Vergleich in Ihrem Projekt verwenden).

Das vom Webpack-Parallel-Uglify-Plugin-Plugin erzeugte Paket ist etwas größer (aber nicht offensichtlich) als das von UglifyJsPlugin. Ich habe mich für die Geschwindigkeit entschieden (nachdem ich es verwendet habe). es sank von 40 Sekunden auf 40 Sekunden auf 19 Sekunden).

Statische Dateien kopieren

Verwenden Sie das Copy-Webpack-Plugin: Kopieren Sie die Dateien im angegebenen Ordner in das angegebene Verzeichnis. Die Konfiguration lautet wie folgt:

var CopyWebpackPlugin = require('copy-webpack-plugin')
plugins: [
 ...
 // copy custom static assets
 new CopyWebpackPlugin([
 {
  from: path.resolve(__dirname, '../static'),
  to: config.build.assetsSubDirectory,
  ignore: ['.*']
 }
 ])
]
DllPlugin & DllReferencePlugin
Nach dem Login kopieren

Das Konzept der DLL sollte von der DLL des Windows-Systems übernommen werden. Ein DLL-Paket ist eine rein abhängige Bibliothek. Es kann nicht alleine ausgeführt werden und wird als Referenz in Ihrer App verwendet.

Beim Packen einer DLL erstellt Webpack einen Index aller enthaltenen Bibliotheken und schreibt sie in eine Manifestdatei. Der Code, der auf die DLL verweist (DLL-Benutzer), muss diese Manifestdatei beim Packen nur lesen. das ist es.

1. Fügen Sie die Datei webpack.dll.conf.js unter dem Projekt-Build-Ordner mit dem folgenden Inhalt hinzu:

var path = require('path')
var webpack = require('webpack')
module.exports = {
 entry: {
 vendor: [ // 这里填写需要的依赖库
  'babel-polyfill',
  'axios',
  'vue/dist/vue.common.js',
  'vue-router',
  'pingpp-js',
  "region-picker"
 ]
 },
 output: {
 path: path.resolve(__dirname, '../static/js'),
 filename: '[name].dll.js',
 library: '[name]_library'
 },
 module: {
 rules: [
  {
  test: /\.vue$/,
  loader: 'vue-loader'
  },
  {
  test: /\.js$/,
  loader: 'babel-loader',
  exclude: /node_modules/
  }
 ]
 },
 plugins: [
 new webpack.optimize.ModuleConcatenationPlugin(),
 new webpack.DllPlugin({
  path: path.join(__dirname, '.', '[name]-manifest.json'),
  libraryTarget: 'commonjs2',
  name: '[name]_library'
 }),
 new webpack.optimize.UglifyJsPlugin({
  compress: {
  warnings: false
  }
 })
 ]
}
Nach dem Login kopieren

2. Fügen Sie den Plugin-Abschnitt in der Datei webpack.prod.conf.js hinzu:

plugins: [
 ...
 // copy custom static assets
  new webpack.DllReferencePlugin({
    context: path.resolve(__dirname, '..'),
    manifest: require('./vendor-manifest.json')
  })
]
Nach dem Login kopieren

3. Fügen Sie Folgendes zur Datei index.html hinzu das Projektstammverzeichnis:

<body>
  <p id="app"></p>
  <!-- built files will be auto injected -->
  <script src="<%= webpackConfig.output.publicPath %>spa/js/vendor.dll.js"></script>   //添加这句,路径可根据所需修改
</body>
Nach dem Login kopieren

4. Fügen Sie den Befehl zum Packen der DLL in package.json

"build:dll": "webpack --config build/webpack.dll.conf.js"
Nach dem Login kopieren

hinzu 5, Befehlssequenz

npm run build:dll //打包一次之后依赖库无变动不需要执行
npm run build
Nach dem Login kopieren

Vorteile

Dll existiert nach dem Packen unabhängig, da Solange die darin enthaltenen Bibliotheken nicht hinzugefügt werden, ändert sich der Hash nicht, selbst wenn er reduziert oder aktualisiert wird, sodass der Online-DLL-Code nicht häufig mit Versionsveröffentlichungen aktualisiert werden muss.

Nachdem der App-Teilcode geändert wurde, müssen Sie nur den App-Teilcode und den DLL-Teil kompilieren. Solange die enthaltenen Bibliotheken nicht vergrößert, verkleinert oder aktualisiert werden, ist kein Neupacken erforderlich. Dadurch wird auch die Geschwindigkeit jeder Kompilierung erheblich verbessert.

Angenommen, Sie haben mehrere Projekte, die dieselben abhängigen Bibliotheken verwenden, dann können sie sich eine DLL teilen.

19s->15s

Babels Cache-Verzeichnis auf true setzen

Babel-Loader in webpack.base.conf.js ändern:

loader: &#39;babel-loader?cacheDirectory=true&#39;,
Nach dem Login kopieren

15s->14s

Setzen Sie noParse

Wenn Sie sicher sind, dass es keine weiteren neuen Abhängigkeiten in einem Modul gibt, können Sie dies konfigurieren, Webpack Die Abhängigkeiten in dieser Datei werden nicht mehr gescannt, was die Leistung für relativ große Klassenbibliotheken verbessert. Weitere Informationen finden Sie in der folgenden Konfiguration:

module: {
 noParse: /node_modules\/(element-ui\.js)/,
 rules: [
  {
   ...
  }
}
happypack
Nach dem Login kopieren

Das Obige ist das, was ich für alle kompiliert habe hilfreich für alle in der Zukunft.

Verwandte Artikel:

Benutzerberechtigungskontrolle in Vue2.0

WeChat-Zahlung über vue.js

Detaillierte Erklärung zur Implementierung von Vuex (ausführliches Tutorial)

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Optimierung der Webpack2-Projektverpackung in vue-cli. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

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)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie kann ich die Einstellungen optimieren und die Leistung verbessern, nachdem ich einen neuen Win11-Computer erhalten habe? Wie kann ich die Einstellungen optimieren und die Leistung verbessern, nachdem ich einen neuen Win11-Computer erhalten habe? Mar 03, 2024 pm 09:01 PM

Wie können wir die Leistung nach Erhalt eines neuen Computers einrichten und optimieren? Benutzer können direkt auf „Datenschutz und Sicherheit“ klicken und dann auf „Allgemein“ (Werbe-ID, lokaler Inhalt, Anwendungsstart, Einstellungsempfehlungen, Produktivitätstools) klicken oder die lokale Gruppenrichtlinie direkt öffnen Lassen Sie mich den Benutzern im Detail vorstellen, wie sie die Einstellungen optimieren und die Leistung des neuen Win11-Computers nach Erhalt verbessern können: 1. Drücken Sie die Tastenkombination [Win+i], um Einstellungen zu öffnen, und klicken Sie dann Klicken Sie links auf [Datenschutz und Sicherheit] und rechts unter „Windows-Berechtigungen“ auf „Allgemein (Werbe-ID, lokaler Inhalt, App-Start, Einstellungsvorschläge, Tools)“.

Ausführliche Interpretation: Warum ist Laravel so langsam wie eine Schnecke? Ausführliche Interpretation: Warum ist Laravel so langsam wie eine Schnecke? Mar 07, 2024 am 09:54 AM

Laravel ist ein beliebtes PHP-Entwicklungsframework, wird jedoch manchmal dafür kritisiert, dass es so langsam wie eine Schnecke ist. Was genau verursacht die unbefriedigende Geschwindigkeit von Laravel? In diesem Artikel werden die Gründe, warum Laravel in vielerlei Hinsicht so langsam wie eine Schnecke ist, ausführlich erläutert und mit spezifischen Codebeispielen kombiniert, um den Lesern zu einem tieferen Verständnis dieses Problems zu verhelfen. 1. Probleme mit der ORM-Abfrageleistung In Laravel ist ORM (Object Relational Mapping) eine sehr leistungsstarke Funktion, die dies ermöglicht

Diskussion über Golangs GC-Optimierungsstrategie Diskussion über Golangs GC-Optimierungsstrategie Mar 06, 2024 pm 02:39 PM

Die Garbage Collection (GC) von Golang war schon immer ein heißes Thema unter Entwicklern. Als schnelle Programmiersprache kann der integrierte Garbage Collector von Golang den Speicher sehr gut verwalten, mit zunehmender Programmgröße treten jedoch manchmal Leistungsprobleme auf. In diesem Artikel werden die GC-Optimierungsstrategien von Golang untersucht und einige spezifische Codebeispiele bereitgestellt. Die Garbage Collection im Garbage Collector von Golang Golang basiert auf gleichzeitigem Mark-Sweep (concurrentmark-s

C++-Programmoptimierung: Techniken zur Reduzierung der Zeitkomplexität C++-Programmoptimierung: Techniken zur Reduzierung der Zeitkomplexität Jun 01, 2024 am 11:19 AM

Die Zeitkomplexität misst die Ausführungszeit eines Algorithmus im Verhältnis zur Größe der Eingabe. Zu den Tipps zur Reduzierung der Zeitkomplexität von C++-Programmen gehören: Auswahl geeigneter Container (z. B. Vektor, Liste) zur Optimierung der Datenspeicherung und -verwaltung. Nutzen Sie effiziente Algorithmen wie die schnelle Sortierung, um die Rechenzeit zu verkürzen. Eliminieren Sie mehrere Vorgänge, um Doppelzählungen zu reduzieren. Verwenden Sie bedingte Verzweigungen, um unnötige Berechnungen zu vermeiden. Optimieren Sie die lineare Suche, indem Sie schnellere Algorithmen wie die binäre Suche verwenden.

Entschlüsselung von Laravel-Leistungsengpässen: Optimierungstechniken vollständig enthüllt! Entschlüsselung von Laravel-Leistungsengpässen: Optimierungstechniken vollständig enthüllt! Mar 06, 2024 pm 02:33 PM

Entschlüsselung von Laravel-Leistungsengpässen: Optimierungstechniken vollständig enthüllt! Als beliebtes PHP-Framework bietet Laravel Entwicklern umfangreiche Funktionen und ein komfortables Entwicklungserlebnis. Mit zunehmender Größe des Projekts und steigender Anzahl an Besuchen kann es jedoch zu Leistungsengpässen kommen. Dieser Artikel befasst sich mit den Techniken zur Leistungsoptimierung von Laravel, um Entwicklern dabei zu helfen, potenzielle Leistungsprobleme zu erkennen und zu lösen. 1. Optimierung der Datenbankabfrage mithilfe von Eloquent. Vermeiden Sie verzögertes Laden, wenn Sie Eloquent zum Abfragen der Datenbank verwenden

Detaillierte Erläuterung der VSCode-Funktionen: Wie hilft es Ihnen, die Arbeitseffizienz zu verbessern? Detaillierte Erläuterung der VSCode-Funktionen: Wie hilft es Ihnen, die Arbeitseffizienz zu verbessern? Mar 25, 2024 pm 05:27 PM

Detaillierte Erläuterung der VSCode-Funktionen: Wie hilft es Ihnen, die Arbeitseffizienz zu verbessern? Mit der kontinuierlichen Weiterentwicklung der Softwareentwicklungsbranche ist das Streben der Entwickler nach Arbeitseffizienz und Codequalität zu wichtigen Zielen ihrer Arbeit geworden. In diesem Prozess wird die Wahl des Code-Editors zu einer Schlüsselentscheidung. Unter vielen Editoren ist Visual Studio Code (kurz VSCode) bei den meisten Entwicklern aufgrund seiner leistungsstarken Funktionen und flexiblen Skalierbarkeit beliebt. In diesem Artikel werden einige Funktionen von VSCode ausführlich vorgestellt und erläutert

Laravel-Leistungsengpass aufgedeckt: Optimierungslösung aufgedeckt! Laravel-Leistungsengpass aufgedeckt: Optimierungslösung aufgedeckt! Mar 07, 2024 pm 01:30 PM

Laravel-Leistungsengpass aufgedeckt: Optimierungslösung aufgedeckt! Mit der Entwicklung der Internettechnologie ist die Leistungsoptimierung von Websites und Anwendungen immer wichtiger geworden. Als beliebtes PHP-Framework kann es bei Laravel während des Entwicklungsprozesses zu Leistungsengpässen kommen. In diesem Artikel werden die Leistungsprobleme untersucht, auf die Laravel-Anwendungen stoßen können, und einige Optimierungslösungen und spezifische Codebeispiele bereitgestellt, damit Entwickler diese Probleme besser lösen können. 1. Optimierung von Datenbankabfragen Datenbankabfragen sind einer der häufigsten Leistungsengpässe in Webanwendungen. existieren

So optimieren Sie die Startelemente des WIN7-Systems So optimieren Sie die Startelemente des WIN7-Systems Mar 26, 2024 pm 06:20 PM

1. Drücken Sie die Tastenkombination (Win-Taste + R) auf dem Desktop, um das Ausführungsfenster zu öffnen, geben Sie dann [regedit] ein und drücken Sie zur Bestätigung die Eingabetaste. 2. Nachdem wir den Registrierungseditor geöffnet haben, klicken wir zum Erweitern auf [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorer] und prüfen dann, ob sich im Verzeichnis ein Serialize-Element befindet. Wenn nicht, können wir mit der rechten Maustaste auf Explorer klicken, ein neues Element erstellen und es Serialize nennen. 3. Klicken Sie dann auf „Serialisieren“, klicken Sie dann mit der rechten Maustaste auf die leere Stelle im rechten Bereich, erstellen Sie einen neuen DWORD-Wert (32) und nennen Sie ihn „Star“.

See all articles