Webpack 基础以及常用插件使用方法

目录

    • 一、前言
    • 二、修改打包入/出口
      • 配置步骤
    • 三、常用插件使用
      • html-webpack-plugin
      • 打包 CSS 代码
      • 提取 CSS 代码
      • 优化压缩过程
      • 打包 less 代码
      • 打包图片文件

一、前言

本质上,Webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图(dependency graph),然后将你项目中所需的每一个模块组合成一个或多个 bundles,它们均为静态资源,用于展示你的内容。
如果对你有帮助,欢迎三连 收藏点赞关注!!!

---- NickYoung


概念 | webpack 中文文档

二、修改打包入/出口

配置步骤

  • 项目根目录,新建 Webpack.config.js 配置文件
  • 导出配置对象,配置入口,出口文件路径(别忘了修改磁盘文件夹和文件的名字)
  • 重新打包观察
const path = require('path')

module.exports = {
  entry: path.resolve(__dirname, 'src/login/index.js'),
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: './login/index.js'  
  }
}

image-20230518101043103.png

三、常用插件使用

html-webpack-plugin

让 Webpack 拥有自动生成 html 文件能力,并引入打包后的其他资源

  • 步骤:
    • 下载 html-webpack-plugin 本地软件包到项目中
npm i html-webpack-plugin --save-dev
  • 配置 webpack.config.js 让 Webpack 拥有插件功能
// ...
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
  // ...
  plugins: [
    new HtmlWebpackPlugin({
      template: './public/login.html', // 模板文件
      filename: './login/index.html' // 输出文件
    })
  ]
}
  • 指定以 public/login.html 为模板复制到 dist/login/index.html,并自动引入其他打包后资源
  • 运行打包命令,观察打包后 dist 文件夹下内容并运行查看效果

打包 CSS 代码

**注意:**Webpack 默认只识别 JS 和 JSON 文件内容,所以想要让 Webpack 识别更多不同内容,需要使用加载器
介绍需要的 2 个加载器来辅助 Webpack 才能打包 css 代码

  • 加载器 css-loader:解析 css 代码
  • 加载器 style-loader:把解析后的 css 代码插入到 DOM(style 标签之间)

步骤:

  • 准备 css 文件引入到 src/login/index.js 中(压缩转译处理等)
/**
 * 目标5:打包 css 代码
 *  5.1 准备 css 代码,并引入到 js 中
 *  5.2 下载 css-loader 和 style-loader 本地软件包
 *  5.3 配置 webpack.config.js 让 Webpack 拥有该加载器功能
 *  5.4 打包后观察效果
 */
// 5.1 准备 css 代码,并引入到 js 中
import 'bootstrap/dist/css/bootstrap.min.css'
import './index.css'

注意:这里只是引入代码内容让 Webpack 处理,不需定义变量接收在 JS 代码中继续使用,所以没有定义变量接收

  • 下载 css-loader 和 style-loader 本地软件包
npm i css-loader style-loader --save-dev
  • 配置 webpack.config.js 让 Webpack 拥有该加载器功能
// ...

module.exports = {
  // ...
  module: { // 加载器
    rules: [ // 规则列表
      {
        test: /\.css$/i, // 匹配 .css 结尾的文件
        use: ['style-loader', 'css-loader'], // 使用从后到前的加载器来解析 css 代码和插入到 DOM
      }
    ]
  }
};
  • 打包后运行 dist/login/index.html 观察效果,看看准备好的样式是否作用在网页上

提取 CSS 代码

让 Webpack 能够提取 css 代码到独立的 css 文件中
**需求:让 webpack 把 css 代码内容字符串单独提取到 dist 下的 css 文件中
需要:mini-css-extract-plugin
**插件来实现
**步骤: **

  • 下载 mini-css-extract-plugin 插件软件包到本地项目中
npm i --save-dev mini-css-extract-plugin
  • 配置 webpack.config.js 让 Webpack 拥有该插件功能
// ...
const MiniCssExtractPlugin = require("mini-css-extract-plugin")

module.exports = {
  // ...
  module: {
    rules: [
      {
        test: /\.css$/i,
        // use: ['style-loader', 'css-loader']
        use: [MiniCssExtractPlugin.loader, "css-loader"],
      },
    ],
  },
  plugins: [
    // ...
    new MiniCssExtractPlugin()
  ]
};
  • 打包后观察效果
  • 注意:不能和 style-loader 一起使用
  • 好处:css 文件可以被浏览器缓存,减少 JS 文件体积,让浏览器并行下载 css 和 js 文件

优化压缩过程

把单独提取的 css 文件内代码压缩
**需求:**把提出的 css 文件内样式代码压缩
**需要:**css-minimizer-webpack-plugin 插件来实现
**步骤: **

  • 下载 mini-css-extract-plugin 插件软件包到本地项目中
npm i css-minimizer-webpack-plugin --save-dev
  • 配置 webpack.config.js 让 Webpack 拥有该插件功能
// ...
const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");

module.exports = {
  // ...
  // 优化
  optimization: {
    // 最小化
    minimizer: [
      // 在 webpack@5 中,你可以使用 `...` 语法来扩展现有的 minimizer(即 
      // `terser-webpack-plugin`),将下一行取消注释(保证 JS 代码还能被压缩处理)
      `...`,
      new CssMinimizerPlugin(),
    ],
  }
};
  • 打包后观察 css 文件内自己代码是否被压缩了

打包 less 代码

让 Webpack 拥有打包 less 代码功能
加载器 less-loader**:**把 less 代码编译为 css 代码,还需要依赖 less 软件包
**步骤: **

  • 新建 login/index.less 文件,设置背景图样式(图片在配套资料-素材文件夹中)
html {
  body {
    background: url('./assets/login-bg.png') no-repeat center/cover;
  }
}
  • less 样式引入到 src/login/index.js 中
/**
 * 目标8:打包 less 代码
 *  8.1 新建 less 代码(设置背景图)并引入到 src/login/index.js 中
 *  8.2 下载 less 和 less-loader 本地软件包
 *  8.3 配置 webpack.config.js 让 Webpack 拥有功能
 *  8.4 打包后观察效果
 */
// 8.1 新建 less 代码(设置背景图)并引入到 src/login/index.js 中
import './index.less'
  • 下载 less 和 less-loader 本地软件包
npm i less less-loader --save-dev
  • 配置 webpack.config.js 让 Webpack 拥有功能
// ...

module.exports = {
  // ...
  module: {
    rules: [
      // ...
      {
        test: /\.less$/i,
        use: [MiniCssExtractPlugin.loader, "css-loader", "less-loader"]
      }
    ]
  }
}
  • 运行打包命令,观察打包后 dist 文件夹下内容并运行查看效果

打包图片文件

让 Webpack 支持图片等资源打包
资源模块**:**Webpack 内置了资源模块的打包,无需下载额外 loader
**步骤: **

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

占位符 【hash】对模块内容做算法计算,得到映射的数字字母组合的字符串
占位符 【ext】使用当前模块原本的占位符,例如:.png / .jpg 等字符串
占位符 【query】保留引入文件时代码中查询参数(只有 URL 下生效)

  • 注意:判断临界值默认为 8KB
    大于 8KB 文件:发送一个单独的文件并导出 URL 地址
    小于 8KB 文件:导出一个 data URI(base64字符串)
  • 在 src/login/index.js 中给 img 标签添加 logo 图片
/**
 * 目标9:打包资源模块(图片处理)
 *  9.1 创建 img 标签并动态添加到页面,配置 webpack.config.js
 *  9.2 打包后观察效果和区别
 */
// 9.1 创建 img 标签并动态添加到页面,配置 webpack.config.js
// 注意:js 中引入本地图片资源要用 import 方式(如果是网络图片http地址,字符串可以直接写)
import imgObj from './assets/logo.png'
const theImg = document.createElement('img')
theImg.src = imgObj
document.querySelector('.login-wrap').appendChild(theImg)
  • 配置 webpack.config.js 让 Webpack 拥有打包图片功能
// ...

module.exports = {
  // ...
  module: {
    rules: [
      // ...
      {
        test: /\.(png|jpg|jpeg|gif)$/i,
        type: 'asset',
        generator: {
          filename: 'assets/[hash][ext][query]'
        }
      }
    ]
  }
}
  • 运行打包命令,观察打包后 dist 文件夹下内容并运行查看效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/105454.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VSCode汉化设置

扩展中搜索并安装 Chinese… 快捷键 commandshiftp,输入框中输入config,选择Config Display Language 选择zh-cn,重启vscode

SpringBoot 分布式验证码登录方案

前言 为了防止验证系统被暴力破解,很多系统都增加了验证码效验,比较常见的就是图片二维码,业内比较安全的是短信验证码,当然还有一些拼图验证码,加入人工智能的二维码等等,我们今天的主题就是前后端分离的…

【MyBatis Plus】初识 MyBatis Plus,在 Spring Boot 项目中集成 MyBatis Plus,理解常用注解以及常见配置

文章目录 一、初识 MyBatis Plus1.1 MyBatis Plus 是什么1.2 MyBatis Plus 和 MyBatis 的区别 二、在 Spring Boot 项目中集成 MyBatis Plus2.1 环境准备2.2 引入 MyBatis Plus 依赖2.3 定义 Mapper2.4 测试 MyBatis Plus 的使用 三、MyBatis Plus 常用注解3.1 为什么需要注解3…

安装Redis使用make命令报异常

报错信息如下: 解决方案: 安装 gcc yum install gcc-c -y清空编译失败残留文件: make distclean使用 make 命令进行编译: make -j 2 PREFIX/usr/local/redis install

Jmeter性能 —— 事务控制器

统计性能测试结果一定会关注TPS,TPS表示:每秒处理事务数,JMeter默认每个事务对应一个请求。我们可以用逻辑控制器中的事务控制器将多个请求统计为一个事务。 1、添加事务控制器 2、事务控制器参数说明 Generate parent sample:如…

编写虚拟UART驱动程序-框架

一、框架回顾 二、编写UART驱动要做的事 1.注册一个uart_driver 2. 对于每一个port,都会在设备树里面有一个节点 3. 设备树里的节点和platform_driver节点匹配 4. 当platform_dirver的probe函数被调用时,可以获得设备树里的信息,从而把每个串…

Vue3 封装 element-plus 图标选择器

一、实现效果 效果一: 效果二: 效果一的这个是把全部的icon图标都让它显示出来,让我们自己选择说选图标 二、效果一实现步骤 2.1. 全局注册 icon 组件 // main.ts import App from ./App.vue; import { createApp } from vue; import * a…

代码随想录算法训练营第2天| 977有序数组的平方、209长度最小的子数组。

JAVA代码编写 977. 有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1: 输入:nums [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释&…

PDF编辑工具Acrobat Pro DC 2023中文

Acrobat Pro DC 2023是一款全面、高效的PDF编辑和管理软件。它提供了丰富的PDF编辑功能,如创建、编辑、合并、分割、压缩、旋转、裁剪等,让用户可以轻松处理各种PDF文档。同时,该软件还具有智能的PDF处理技术,可以自动识别和修复P…

中国铁路线路数据,分为高速铁路和普通铁路,有shp格式和xlsx格式,免费下载

数据地址: 中国铁路线路数据https://www.xcitybox.com/datamarketview/#/Productpage?id274 基本信息. 数据名称: 中国铁路线路数据 数据格式: ShpXlsx 数据时间: 2018年 数据几何类型: 线 数据坐标系: WGS84坐标系 数据来源:网络公开数据 数据…

Java 使用 poi 和 aspose 实现 word 模板数据写入并转换 pdf 增加水印

本项目所有源码和依赖资源都在文章顶部链接,有需要可以下载使用 1. 需求描述 从指定位置读取一个 word 模板获取业务数据并写入该 word 模板,生成新的 word 文档将新生成的 word 文档转换为 pdf 格式对 pdf 文档添加水印 2. 效果预览 word 模板 带水印的…

openpnp - SlotSchultzFeeder source code bugfix

文章目录 openpnp - SlotSchultzFeeder source code bugfix概述笔记openpnp源码调试环境排查思路开git分支查到的问题 - 1查到的问题 - 2查到的问题 - 3针对以上问题进行的逻辑修正D:\my_openpnp\openpnp_github\src\main\java\org\openpnp\machine\reference\driver\wizards\G…

Spark On Hive原理和配置

目录 一、Spark On Hive原理 (1)为什么要让Spark On Hive? 二、MySQL安装配置(root用户) (1)安装MySQL (2)启动MySQL设置开机启动 (3)修改MySQL…

用 Rust 和 cURL 库制作一个有趣的爬虫

目录 一、介绍 二、准备工作 三、代码实现 四、解析 HTML 并提取特定元素示例 总结 本文将介绍如何使用 Rust 编程语言和 cURL 库制作一个有趣的网络爬虫。我们将通过实例代码来展示如何抓取网页内容、处理数据和解析 HTML 结构。同时,还将探讨爬虫技术的原理、…

YOLOv5 添加 OTA,并使用 coco、CrowdHuman数据集进行训练。

YOLO-OTA 第一步:拉取 YOLOv5 的代码第二步:添加 ComputeLossOTA 函数第二步:修改 train 和 val 中损失函数为 ComputeLossOTA 函数1、在 train.py 中 首先添加 ComputeLossOTA 库。2、在 train.py 修改初始化的损失函数3、在 train.py 修改一…

ChatGPT 与 Python Echarts 完成热力图实例

热力图是一种数据可视化方式,它通过颜色的变化来表示数据的差异和分布。以下是使用热力图的一些作用和好处: 数据可视化:热力图可以将复杂的数据集转化为更直观、更易理解的形式。这对于很多人来说,尤其是那些没有深入统计学或数…

YouTrack 中如何设置邮件通知

在 YouTrack 中,默认是不会邮件通知的。 你可以为你的账号设置邮件通知。 设置的方法为单击用户属性,然后在弹出的小窗口中选择属性选项。 设置邮件通知 在通知 Tab 页面中,选择发送邮件的方式,默认这个选项是不选择的。 用户…

IDEA 断点高阶

一、按钮介绍 1.1 补充 返回断点处: 设置debug配置: 二、增加/切换debugger视图 三、window快捷键 所在行处: CtrlF8断点属性编辑: CtrlShiftF8 四、一些常用的高级功能 4.1 查看对象内存-Attach memory agent 1.勾选Atta…

vscode下ssh免密登录linux服务器

vscode使用ssh免密登录linux 1、安装SSH插件2、生成密钥3、linux安装ssh服务4、linux下配置公钥5、vscode远程登录 注:测试环境为window10Ubuntu1804/Ubuntu2204 1、安装SSH插件 扩展->搜索SSH->点击install进行安装,如下图所示: 2、…

非小米笔记本小米妙享中心安装最新教程 3.2.0.464 兼容所有Windows系统

小米妙享中心 3.2.0.464 版本帮助 : 支持音频流转、屏幕镜像、屏幕拓展、键鼠拓展、无线耳机、小米互传 目录 小米妙享中心 3.2.0.464 版本帮助 : 1.常规教程使用安装包方式安装失败 或者 1.1安装失败可使用大佬的加载补丁方法解决 补充卸载残留 1.2 截图存档 2. 本教程…