Inhaltsverzeichnis
(1) UglifyJS
(2)webpack-parallel-uglify-plugin
(3)terser-webpack-plugin
Heim Web-Frontend js-Tutorial Ausführliche Erläuterung der drei häufig in Webpacks verwendeten JS-Komprimierungs-Plug-Ins

Ausführliche Erläuterung der drei häufig in Webpacks verwendeten JS-Komprimierungs-Plug-Ins

Apr 13, 2021 pm 07:00 PM
webpack

Dieser Artikel gibt Ihnen eine detaillierte Einführung in drei häufig verwendete JS-Komprimierungs-Plug-Ins im Webpack. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Ausführliche Erläuterung der drei häufig in Webpacks verwendeten JS-Komprimierungs-Plug-Ins

Hier erklären wir drei JS-Verpackungs-Plug-ins:

(1) UglifyJS

Unterstützung: babel present2015, webpack3babel present2015webpack3

缺点:

它使用的是单线程压缩代码,也就是说多个js文件需要被压缩,它需要一个个文件进行压缩。所以说在正式环境打包压缩代码速度非常慢(因为压缩JS代码需要先把代码解析成用Object抽象表示的AST语法树,再去应用各种规则分析和处理AST,导致这个过程耗时非常大)。

优点: 老项目支持(兼容 IOS10)

使用:

npm i uglifyjs-webpack-plugin

module.exports = {
  plugins: [
    new webpack.optimize.UglifyJsPlugin({
      sourceMap: true,
      compress: {
        warnings: false
      }
    }),
  ]
}
Nach dem Login kopieren

【推荐学习:javascript高级教程

(2)webpack-parallel-uglify-plugin

支持: babel7webpack4

缺点: 老项目不支持(不兼容 IOS10)

优点:

ParallelUglifyPlugin插件则会开启多个子进程,把对多个文件压缩的工作分别给多个子进程去完成,但是每个子进程还是通过UglifyJS去压缩代码。无非就是变成了并行处理该压缩了,并行处理多个子任务,效率会更加的提高。

使用:

1、npm i -D webpack-parallel-uglify-plugin

2、webpack.config.js文件

// 引入 ParallelUglifyPlugin 插件
const ParallelUglifyPlugin = require('webpack-parallel-uglify-plugin');

module.exports = {
plugins: [
// 使用 ParallelUglifyPlugin 并行压缩输出JS代码
new ParallelUglifyPlugin({
// 传递给 UglifyJS的参数如下:
uglifyJS: {
output: {
/*
 是否输出可读性较强的代码,即会保留空格和制表符,默认为输出,为了达到更好的压缩效果,
 可以设置为false
*/
beautify: false,
/*
 是否保留代码中的注释,默认为保留,为了达到更好的压缩效果,可以设置为false
*/
comments: false
},
compress: {
/*
 是否在UglifyJS删除没有用到的代码时输出警告信息,默认为输出,可以设置为false关闭这些作用
 不大的警告
*/
warnings: false,

/*
 是否删除代码中所有的console语句,默认为不删除,开启后,会删除所有的console语句
*/
drop_console: true,

/*
 是否内嵌虽然已经定义了,但是只用到一次的变量,比如将 var x = 1; y = x, 转换成 y = 5, 默认为不
 转换,为了达到更好的压缩效果,可以设置为false
*/
collapse_vars: true,

/*
 是否提取出现了多次但是没有定义成变量去引用的静态值,比如将 x = 'xxx'; y = 'xxx'  转换成
 var a = 'xxxx'; x = a; y = a; 默认为不转换,为了达到更好的压缩效果,可以设置为false
*/
reduce_vars: true
}
}
}),
]
}
Nach dem Login kopieren

3、说明

  • test: 使用正则去匹配哪些文件需要被 ParallelUglifyPlugin 压缩,默认是 /.js$/.

  • include: 使用正则去包含被 ParallelUglifyPlugin 压缩的文件,默认为 [].

  • exclude: 使用正则去不包含被 ParallelUglifyPlugin 压缩的文件,默认为 [].

  • cacheDir: 缓存压缩后的结果,下次遇到一样的输入时直接从缓存中获取压缩后的结果并返回,cacheDir

  • 用于配置缓存存放的目录路径。默认不会缓存,想开启缓存请设置一个目录路径。

  • workerCount:开启几个子进程去并发的执行压缩。默认是当前运行电脑的 CPU 核数减去1。

  • sourceMap:是否为压缩后的代码生成对应的Source Map, 默认不生成,开启后耗时会大大增加,一般不会将压缩后的代码的

  • sourceMap发送给网站用户的浏览器。

  • uglifyJS:用于压缩 ES5 代码时的配置,Object 类型,直接透传给 UglifyJS 的参数。

  • uglifyES:用于压缩 ES6 代码时的配置,Object 类型,直接透传给 UglifyES 的参数。

4、ParallelUglifyPlugin 实列会有以下参数配置项:

new ParallelUglifyPlugin({
  uglifyJS: {},
  test: /.js$/g,
  include: [],
  exclude: [],
  cacheDir: '',
  workerCount: '',
  sourceMap: false
});
Nach dem Login kopieren

5、github地址(https://github.com/gdborton/webpack-parallel-uglify-plugin)

Ausführliche Erläuterung der drei häufig in Webpacks verwendeten JS-Komprimierungs-Plug-Ins

(3)terser-webpack-plugin

支持: babel7webpack4

Nachteile:

Es verwendet einen Single-Thread-Komprimierungscode, was bedeutet, dass mehrere js-Dateien komprimiert werden müssen und jede Datei komprimiert werden muss. Daher ist das Packen und Komprimieren von Code in einer formalen Umgebung sehr langsam (da das Komprimieren von JS-Code zunächst das Parsen des Codes in einen AST-Syntaxbaum erfordert, der durch Objektabstraktion dargestellt wird, und dann die Anwendung verschiedener Regeln zur Analyse und Verarbeitung des AST, was diesen Prozess sehr zeitaufwändig macht -verbrauchend).

Vorteile:

Unterstützung für alte Projekte (kompatibel mit IOS10)

(2) webpack-parallel-uglify-plugin

Unterstützung:

babel7 , webpack4Ausführliche Erläuterung der drei häufig in Webpacks verwendeten JS-Komprimierungs-Plug-Ins

Nachteile: Alte Projekte werden nicht unterstützt (nicht kompatibel mit IOS10)

🎜Vorteile: 🎜🎜🎜Das ParallelUglifyPlugin-Plug-in öffnet mehrere untergeordnete Prozesse und Mehrere Dateien verarbeiten Die Komprimierungsarbeit wird von mehreren Unterprozessen abgeschlossen, aber jeder Unterprozess komprimiert den Code weiterhin über UglifyJS. Es ist nichts anderes als die parallele Verarbeitung, die komprimiert werden muss, um die Effizienz noch weiter zu steigern. 🎜🎜🎜Verwenden Sie: 🎜🎜🎜1, npm i -D webpack-parallel-uglify-plugin🎜🎜2, webpack.config.js Datei 🎜
optimization: {
  minimize: true,
  minimizer: [
    new TerserPlugin({
      terserOptions: {
        ecma: 5,
        warnings: false,
        parse: {},
        compress: {},
        mangle: true, // Note `mangle.properties` is `false` by default.
        module: false,
        output: null,
        toplevel: false,
        nameCache: null,
        ie8: false,
        keep_fnames: false,
        safari10: true
      }
    })
  ]
}
Nach dem Login kopieren
🎜3, Beschreibung🎜🎜🎜🎜test: Verwenden Sie reguläre Ausdrücke, um zu ermitteln, welche Dateien von ParallelUglifyPlugin komprimiert werden müssen. Der Standardwert ist /.js$/.🎜🎜🎜🎜include: Verwenden Sie reguläre Ausdrücke, um von ParallelUglifyPlugin komprimierte Dateien einzuschließen. ].🎜🎜🎜 🎜exclude: Verwenden Sie reguläre Ausdrücke, um von ParallelUglifyPlugin komprimierte Dateien auszuschließen. Der Standardwert ist [].🎜🎜🎜🎜cacheDir: Wenn Sie das nächste Mal auf dieselbe Eingabe stoßen, rufen Sie die komprimierten Ergebnisse direkt ab den Cache und geben Sie sie zurück. CacheDir🎜🎜🎜🎜 wird verwendet, um den Verzeichnispfad zu konfigurieren, in dem der Cache gespeichert ist. Es wird standardmäßig nicht zwischengespeichert. Wenn Sie das Caching aktivieren möchten, legen Sie bitte einen Verzeichnispfad fest. 🎜🎜🎜🎜workerCount: Starten Sie mehrere Unterprozesse, um die Komprimierung gleichzeitig durchzuführen. Der Standardwert ist die Anzahl der CPU-Kerne des aktuell laufenden Computers minus 1. 🎜🎜🎜🎜sourceMap: Gibt an, ob die entsprechende Quellzuordnung für den komprimierten Code generiert werden soll. Wenn diese Option aktiviert ist, erhöht sich der Zeitverbrauch im Allgemeinen erheblich nicht zum Surfen an Website-Benutzer gesendet werden. 🎜🎜🎜🎜uglifyJS: wird für die Konfiguration beim Komprimieren von ES5-Code verwendet, Objekttyp, direkt transparent an UglifyJS-Parameter übergeben. 🎜🎜🎜🎜uglifyES: Konfiguration zum Komprimieren von ES6-Code, Objekttyp und Parameter, die direkt an UglifyES übergeben werden. 🎜🎜🎜🎜4. Die aktuelle Spalte von ParallelUglifyPlugin enthält die folgenden Parameterkonfigurationselemente: 🎜rrreee🎜5. Github-Adresse (https://github.com/gdborton/webpack-parallel-uglify-plugin) 🎜🎜Ausführliche Erläuterung der drei häufig in Webpacks verwendeten JS-Komprimierungs-Plug-Ins🎜🎜🎜 (3) terser-webpack- Plugin 🎜🎜🎜🎜Unterstützung: 🎜 babel7, webpack4🎜🎜🎜Nachteile: 🎜 Alte Projekte werden nicht unterstützt (nicht kompatibel mit IOS10) 🎜🎜🎜Vorteile: 🎜🎜🎜 🎜🎜 und wie beim ParallelUglifyPlugin wird die parallele Verarbeitung mehrerer Teilaufgaben die Effizienz noch weiter steigern. 🎜🎜🎜🎜webpack4 wird offiziell von jemandem empfohlen und gewartet. 🎜🎜🎜🎜🎜Verwendung: 🎜🎜rrreeerrreee🎜Github-Adresse: https://github.com/webpack-contrib/terser-webpack-plugin🎜🎜🎜🎜🎜Weitere Programmierkenntnisse finden Sie unter: 🎜Programmiervideo🎜! ! 🎜

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der drei häufig in Webpacks verwendeten JS-Komprimierungs-Plug-Ins. 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

Video Face Swap

Video Face Swap

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

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)

VUE3-Erste-Schritte-Tutorial: Paketieren und Erstellen mit Webpack VUE3-Erste-Schritte-Tutorial: Paketieren und Erstellen mit Webpack Jun 15, 2023 pm 06:17 PM

Vue ist ein hervorragendes JavaScript-Framework, das uns dabei helfen kann, schnell interaktive und effiziente Webanwendungen zu erstellen. Vue3 ist die neueste Version von Vue, die viele neue Features und Funktionen einführt. Webpack ist derzeit einer der beliebtesten JavaScript-Modulpaketierer und Build-Tools, der uns bei der Verwaltung verschiedener Ressourcen in unseren Projekten helfen kann. In diesem Artikel wird erläutert, wie Sie Webpack zum Verpacken und Erstellen von Vue3-Anwendungen verwenden. 1. Webpack installieren

Was ist der Unterschied zwischen Vite und Webpack? Was ist der Unterschied zwischen Vite und Webpack? Jan 11, 2023 pm 02:55 PM

Unterschiede: 1. Die Startgeschwindigkeit des Webpack-Servers ist langsamer als die von Vite. Da Vite beim Start nicht gepackt werden muss, müssen keine Modulabhängigkeiten analysiert und kompiliert werden, sodass die Startgeschwindigkeit sehr hoch ist. 2. Das Hot-Update von Vite ist in Bezug auf HRM schneller. Wenn sich der Inhalt eines bestimmten Moduls ändert, muss der Browser das Modul einfach erneut anfordern. 3. Vite verwendet esbuild, um Abhängigkeiten vorab zu erstellen, während Webpack auf Knoten basiert. 4. Die Ökologie von Vite ist nicht so gut wie die von Webpack und die Loader und Plug-Ins sind nicht umfangreich genug.

Verwendung von PHP und Webpack für die modulare Entwicklung Verwendung von PHP und Webpack für die modulare Entwicklung May 11, 2023 pm 03:52 PM

Mit der kontinuierlichen Weiterentwicklung der Webentwicklungstechnologie sind die Front-End- und Back-End-Trennung sowie die modulare Entwicklung zu einem weit verbreiteten Trend geworden. PHP ist eine häufig verwendete Back-End-Sprache. Bei der modularen Entwicklung müssen wir einige Tools verwenden, um Module zu verwalten und zu packen. In diesem Artikel wird die Verwendung von PHP und Webpack für die modulare Entwicklung vorgestellt. 1. Was ist modulare Entwicklung? Unter modularer Entwicklung versteht man die Zerlegung eines Programms in verschiedene unabhängige Module.

Wie konvertiert Webpack das ES6-Modul in das ES5-Modul? Wie konvertiert Webpack das ES6-Modul in das ES5-Modul? Oct 18, 2022 pm 03:48 PM

Konfigurationsmethode: 1. Verwenden Sie die Importmethode, um den ES6-Code in die gepackte JS-Codedatei einzufügen. 2. Verwenden Sie das NPM-Tool, um das Babel-Loader-Tool zu installieren. Die Syntax lautet „npm install -D babel-loader @babel/core“. @babel/preset-env“; 3. Erstellen Sie die Konfigurationsdatei „.babelrc“ des Babel-Tools und legen Sie die Transkodierungsregeln fest; 4. Konfigurieren Sie die Verpackungsregeln in der Datei webpack.config.js.

Verwenden Sie Spring Boot und Webpack, um Front-End-Projekte und Plug-in-Systeme zu erstellen Verwenden Sie Spring Boot und Webpack, um Front-End-Projekte und Plug-in-Systeme zu erstellen Jun 22, 2023 am 09:13 AM

Da die Komplexität moderner Webanwendungen immer weiter zunimmt, wird die Entwicklung exzellenter Front-End-Engineering- und Plug-in-Systeme immer wichtiger. Mit der Popularität von Spring Boot und Webpack sind sie zu einer perfekten Kombination für die Erstellung von Front-End-Projekten und Plug-in-Systemen geworden. SpringBoot ist ein Java-Framework, das Java-Anwendungen mit minimalen Konfigurationsanforderungen erstellt. Es bietet viele nützliche Funktionen, wie z. B. die automatische Konfiguration, sodass Entwickler Webanwendungen schneller und einfacher erstellen und bereitstellen können. W

Welche Dateien können Vue-Webpack-Pakete enthalten? Welche Dateien können Vue-Webpack-Pakete enthalten? Dec 20, 2022 pm 07:44 PM

In Vue kann Webpack JS-, CSS-, Bilder-, JSON- und andere Dateien in geeignete Formate für die Browserverwendung packen; in Webpack können JS-, CSS-, Bilder-, JSON- und andere Dateitypen als Module verwendet werden. Verschiedene Modulressourcen im Webpack können gepackt und zu einem oder mehreren Paketen zusammengeführt werden. Während des Verpackungsprozesses können die Ressourcen verarbeitet werden, z. B. durch Komprimieren von Bildern, Konvertieren von SCSS in CSS, Konvertieren der ES6-Syntax in ES5 usw., was möglich ist Wird anhand des HTML-Dateityps erkannt.

Was ist Webpack? Detaillierte Erklärung der Funktionsweise? Was ist Webpack? Detaillierte Erklärung der Funktionsweise? Oct 13, 2022 pm 07:36 PM

Webpack ist ein Modulpaketierungstool. Es erstellt Module für verschiedene Abhängigkeiten und packt sie alle in verwaltbare Ausgabedateien. Dies ist besonders nützlich für Single-Page-Anwendungen (der heutige De-facto-Standard für Webanwendungen).

Eine eingehende Analyse des Verpackungsprozesses und der Prinzipien von Webpack Eine eingehende Analyse des Verpackungsprozesses und der Prinzipien von Webpack Aug 09, 2022 pm 05:11 PM

Wie implementiert Webpack die Verpackung? Der folgende Artikel vermittelt Ihnen ein tiefgreifendes Verständnis der Webpack-Verpackungsprinzipien. Ich hoffe, er wird Ihnen hilfreich sein!

See all articles