如何对Webpack进行优化

目录

1.优化-提取css代码

[1.1. 插件 mini-css-extract-plugin](#1.1. 插件 mini-css-extract-plugin)

[1.2. 步骤:](#1.2. 步骤:)

[1.3. 注意](#1.3. 注意)

[1.4. 好处](#1.4. 好处)

[1.5. 练习](#1.5. 练习)

[2. 优化-css代码提取后压缩](#2. 优化-css代码提取后压缩)

[2.1. 问题引入](#2.1. 问题引入)

[2.2. 解决](#2.2. 解决)

[2.3. 步骤](#2.3. 步骤)

[3. Webpack打包less代码](#3. Webpack打包less代码)

[3.1. 加载器 less-loader](#3.1. 加载器 less-loader)

[3.2. 步骤](#3.2. 步骤)

[3.3. 注意:](#3.3. 注意:)

[4. Webpack打包图片](#4. Webpack打包图片)

[4.1. 资源模块](#4.1. 资源模块)

[4.2. 步骤](#4.2. 步骤)

[3. 注意](#3. 注意)


1.优化-提取css代码

1.1. 插件 mini-css-extract-plugin

  • 提取 css 代码

1.2. 步骤:

  • 下载 mini-css-extract-plugin 本地软件包

npm i mini-css-extract-plugin --save-dev

  • 配置 webpack.config.js 让 Webpack 拥有该插件功能
  • 打包后观察效果

1.3. 注意

  • 不能和 style-loader 一起使用
  • 提取的css代码没有被压缩

1.4. 好处

  • css 文件可以被浏览器缓存,减少 js 文件体积

1.5. 练习

javascript 复制代码
//引入模块
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')

module.exports = {
  //入口
  entry: path.resolve(__dirname,'src/login/index.js'),
  //出口
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: './login/index.js',
    clean: true  //生成打包后内容之前,清空输出目录
  },
  //插件(给 Webpack 提供更多功能)
  plugins: [
    new HtmlWebpackPlugin({
      template: path.resolve(__dirname,'public/login.html'), //模板文件
      filename: path.resolve(__dirname,'dist/login/index.html') //输出文件
    }),
    new MiniCssExtractPlugin() //生成 css文件
  ],
  // 加载器(让 webpack 识别更多模块文件内容)
  module: {
    rules: [
      {
        test: /\.css$/i,  //匹配以.css结尾的文件,并且忽视大小写 
        use: [MiniCssExtractPlugin.loader ,"css-loader"]  //从后-前进行使用
      },
    ],
  },
};

2. 优化-css代码提取后压缩

2.1. 问题引入

  • css 代码提取后没有压缩

2.2. 解决

  • 使用 css-minimizer-webpack-plugin 插件

2.3. 步骤

  • 下载 css-minimizer-webpack-plugin 本地软件包

npm i css-minimizer-webpack-plugin --save-dev

  • 配置 webpack.config.js 让 webpack 拥有该功能
  • 打包重新观察

3. Webpack打包less代码

3.1. 加载器 less-loader

  • 把 less 代码编译为 css 代码

3.2. 步骤

  • 新建 less 代码(设置背景图)并引入到 src/login/index.js 中
  • 下载 less 和 less-loader 本地软件包

npm i less less-loader --save-dev

  • 配置 webpack.config.js 让 Webpack 拥有功能
  • 打包后观察效果

3.3. 注意:

  • less-loader 需要配合 less 软件包使用

4. Webpack打包图片

4.1. 资源模块

  • Webpack5 内置资源模块(字体,图片等)打包,无需额外 loader

4.2. 步骤

  • 配置 webpack.config.js 让 Webpack 拥有打包图片功能

占位符 【hash】对模块内容做算法计算,得到映射的数字字母组合的字符串

占位符 【ext】使用当前模块原本的占位符,例如:.png / .jpg 等字符串

占位符 【query】保留引入文件时代码中查询参数(只有 URL 下生效)

  • 打包后观察效果和区别

3. 注意

  • 判断临界值默认为 8KB

大于 8KB 文件:发送一个单独的文件并导出 URL 地址

小于 8KB 文件:导出一个 data URI(base64字符串)

相关推荐
掘了4 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅4 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅5 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅5 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment5 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅5 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊5 小时前
jwt介绍
前端
爱敲代码的小鱼5 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax
Cobyte6 小时前
AI全栈实战:使用 Python+LangChain+Vue3 构建一个 LLM 聊天应用
前端·后端·aigc
NEXT066 小时前
前端算法:从 O(n²) 到 O(n),列表转树的极致优化
前端·数据结构·算法