前端必会的Webpack优化技巧

前端工程化是现代 web 开发不可或缺的一部分。而其中用来打包资源的Webpack更是一个必会的技能。然而在使用Webpack的过程中,为了达到最佳性能,我们还需要通过一些优化技巧来优化Webpack的打包过程。本文将介绍前端必会的Webpack优化技巧全攻略。

一、基础优化

1.1 设置webpack.config.js

webpack.config.js 是Webpack打包的配置文件。可以通过对打包输出文件进行优化来提升打包速度。下面是一些基础的优化配置:

  • 使用空对象:在开发过程中,我们无需开启任何 optimization 选项,比如 optimization: {}

  • 选择合适的模式:可以指定为开发模式或者生产模式

JS
module.exports = {
mode: 'development', // 'production' || 'development'
}

  • 增加 resolve.modules 配置

assets 文件夹中还经常会有 font 或者 svg,这些恐怕只有在测试阶段才有必要引入到项目当中。所以,在正式环境中,可以只保留 src 文件夹,减少文件检索的冗余查找。

javascript
module.exports = {
resolve: {
modules: ['node_modules'], // 只检索 node_modules 文件夹
},
}

1.2 静态资源处理

在应用中引入若干静态资源库,例如 Less / SASS / Stylus、iconfont、Bootstrap、jQuery 等。由此可以开发出完整的模板,使得组件开发更加轻松高效。但是随着时间的推移,这些资源库可能会越来越臃肿,从而导致应用变得越来越慢。因此,对于一些依赖项,您需要只在开发阶段把它们放进来,而不是在应用程序中保留它们。对于生产,可以通过一个脚本(例如,build 脚本)来将所有除应用程序之外的所有内容移除掉。

const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  plugins: [new HtmlWebpackPlugin()],
  performance: {
    hints: process.env.NODE_ENV === 'production' ? 'warning' : false,
  },
};

二、性能优化

2.1 使用 tree shaking 剔除冗余代码

treeshaking是指在程序打包的过程中,基于静态代码分析的技术,获取程序中最终被执行的 JavaScript 代码,去掉程序中未被用到的代码。当应用程序变得越来越大时,这个方式比根据静态分析 HAR 文件移除 JavaScript 或分析代码库所花费的时间小得多。

//webpack.config.js
module.exports={
    mode:"production",
    entry:{
        index:"./src/index.js"
    },
    output:{
        path:path.resolve(__dirname,'dist'),
        filename:'bundle.js'
    },
    optimization:{
        minimize:true
    }
}

2.2 基于缓存的优化

对于一些不变的第三方库,你可以利用缓存机制提升你应用程序的性能。为了实现,你需要在浏览器中缓存你的 vendor.bundled.js 文件,它包含了所有的与外来库的交互。这样,如果第三方库没有发生变化并且有缓存,你就很快就能在第二次加载页面的时候获得主代码包。

2.3 单独拆分 CSS 文件

对于小型应用,当 CSS 文件被加载时,它可以位于 page HTML 页面的 中。但是对于大型应用来说,如果你把应用从一个单一的 HTML 文档中拆分出去(例如使用服务端网页应用程序,或使用某种类似 Vue 的工具把应用编译成 HTML、CSS 和 JavaScript)时,需要一个单独的 CSS 文件。

```
//webpack.config.js
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const path = require('path');

module.exports = {
...
module: {
rules: [
{
test: /.scss$/,
use: [MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader'],
},
],
},
plugins: [new MiniCssExtractPlugin()],
};


### 2.4 使用 compression-webpack-plugin 来压缩成 zip 格式

gzip 是最常见的压缩算法,最常用的提高性能的机制之一。压缩生产包儿所花费的时间是很值得的,因为它可以减少页面加载时间、减少文件传输时间。

//webpack.config.js
const CompressionPlugin = require('compression-webpack-plugin');

module.exports = {
...
performance: {
hints: false,
maxAssetSize: 3000000,
maxEntrypointSize: 6000000,
},
plugins: [
new CompressionPlugin({
test: /.js(\?.*)?$/i,
}),
],
};
```

结语

WebPack 优化不是一件容易的事情。我们需要充分的理解 WebPack 的打包原理,了解其工作流程,在确定问题并深入分析性能调优技巧时充分实践。当你在模块化前端资产时,需要有一个 WebPack 性能优化的计划。理解了 WebPack 相关的性能优化技巧之后,我们的 web 应用程序将展现出很大的改善。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:前端必会的Webpack优化技巧 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 使用css实现三角符号效果

    下面是使用CSS实现三角符号效果的完整攻略: 1.使用border实现三角形 我们可以利用CSS的border属性来实现三角形。以右三角形(实例1)为例,代码如下: .triangle { width: 0; height: 0; border-top: 20px solid transparent; border-right: 20px solid red…

    css 2023年6月10日
    00
  • CSS实现定位元素居中的方法

    下面是详细的讲解CSS实现定位元素居中的方法的攻略: 垂直居中 方法一:使用flex布局实现 使用flex布局可以轻松实现垂直居中的效果。只需将父元素设置为display: flex,并添加justify-content: center和align-items: center两个属性即可。 .container { display: flex; justif…

    css 2023年6月9日
    00
  • padding盒子内部文字跟盒子之间的距离

    首先,padding 是盒子和其边框之间的空间,而不是盒子内部的空间。因此,padding 会对盒子的大小产生影响,并且也会影响盒子内部内容的位置。 在 CSS 中,我们可以使用 padding 属性来定义盒子的内边距。这个属性可以取一个数值,表示上下左右四个方向的内边距大小(单位可以是 px、em 等),也可以取两个值,表示上下和左右两个方向的内边距大小。…

    css 2023年6月9日
    00
  • 魔兽世界怀旧服决斗俱乐部新赛有什么奖励 决斗俱乐部新赛季规则详解

    魔兽世界怀旧服决斗俱乐部新赛奖励 近日,魔兽世界怀旧服官方公布了决斗俱乐部新赛的规则和奖励,本文将为大家详细解读。 奖励 本次决斗俱乐部新赛季的奖励主要有以下四个方面: 等级排名奖励:在赛季结束后,将统计各选手决斗场地对战获胜次数排名后,奖励前列选手不同等级的徽章。 标准淘汰赛奖励:决斗俱乐部将会举办标准淘汰赛,根据选手在淘汰赛中的表现,赠送丰富的奖励。例如…

    css 2023年6月10日
    00
  • CSS经典三栏布局方案(6种方法)

    那么我们开始对“CSS经典三栏布局方案(6种方法)”的详细讲解。 什么是经典三栏布局 经典三栏布局通常是指将一个页面分成三列的布局,一般是左右两栏固定宽度,中间一栏自适应的布局结构。这个布局方法是网页布局设计中使用最为广泛的一种布局,相信很多前端工程师都需要掌握。 CSS经典三栏布局方案(6种方法) 前言 下面我们会对6种经典的三栏布局方案进行详细讲解,这些…

    css 2023年6月10日
    00
  • nice怎么直播?nice直播方法图解

    Nice怎么直播?Nice直播方法图解 如果你想进行直播或观看别人的直播,可以尝试使用Nice直播,它是一款功能强大、简单易用的直播平台。本文将详细讲解Nice怎么直播以及Nice直播方法图解。 步骤一:下载并安装Nice直播客户端 首先,你需要访问官方网站,下载并安装Nice直播客户端。Nice直播目前支持Windows和Mac版,选择适合自己电脑系统的版…

    css 2023年6月11日
    00
  • 网站前端性能优化之javascript和css篇

    网站前端性能优化之javascript和css篇 在网站前端开发中,性能优化是一个非常重要的问题。优化网站性能可以提高用户体验,减少服务器负载,提高网站排名等。本攻略将详细讲解网站前端性能优化之javascript和css篇,包括优化方法、注意事项和示例说明。 1. 优化方法 1.1 压缩和合并文件 在网站前端开发中,javascript和css文件通常比较…

    css 2023年5月18日
    00
  • jQuery实现自动调整字体大小的方法

    以下是“jQuery实现自动调整字体大小的方法”的完整攻略。 1. 背景介绍 在网页排版中,有时候出现文字内容过多,而文字区域大小有限的情况,此时可以考虑使用动态自动调整字体大小的效果,让字体大小随着区域大小的变化而自适应,以达到更好的阅读体验。此时jQuery可以帮助我们实现这一功能。 2. 实现步骤 以下是实现自动调整字体大小的方法,分为以下两步: 2.…

    css 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部