【Webpack】webpack的基础使用详细总结 上(建议收藏)

news2024/11/28 20:35:15

1- 前言(前端工程化)


实际的前端开发:

  • 模块化(js 的模块化、css 的模块化、其它资源的模块化
  • 组件化(复用现有的 UI 结构、样式、行为)
  • 规范化(目录结构的划分、编码规范化、接口规范化、文档规范化、 Git 分支管理)
  • 自动化(自动化构建、自动部署、自动化测试)

什么是前端工程化:

前端工程化指的是:在企业级的前端项目开发中,把前端开发所需的工具、技术、流程、经验等进行规范化、标准化。

最终落实到细节上,就是实现前端的“4 个现代化”:模块化、组件化、规范化、自动化

前端工程化的好处:

前端工程化的好处主要体现在如下两方面:

  1. 前端工程化让前端开发能够“自成体系”,覆盖了前端项目从创建到部署的方方面面
  2. 最大程度地提高了前端的开发效率,降低了技术选型、前后端联调等带来的协调沟通成本

2- 介绍


2.1 概念

本质上,webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。

更多详细了解,可以去webpack官网

总结:

  1. webpack是一个前端打包工具
  2. 用来处理现代前端错综复杂的依赖关系(A插件需要B插件,B插件有D插件 F插件需要A插件) 生成浏览器 可以识别静态资源
  3. Vue前期 脚手架就是用 webpack制作(Vue开始推荐用vite构建工具(更快))、react脚手架、angular等现代框架脚手架都是依赖webpack

2.2 主要功能

它提供了友好的前端模块化开发支持,以及代码压缩混淆、处理浏览器端 JavaScript 的兼容性、性能优化等强大的功能。

2.3 好处

让程序员把工作的重心放到具体功能的实现上,提高了前端开发效率和项目的可维护性。

注意 :目前企业级的前端项目开发中,绝大多数的项目都是基于 webpack 进行打包构建的。

3- 安装


  • 在项目中安装 webpack,新建一个mywebpack文件夹,用来介绍webpack的基础使用

  • 在终端运行如下的命令,安装 webpack 相关的两个包:npm i webpack webpack-cli -D

1.安装

  • 新建 dist 、public、src 三个文件夹
    在这里插入图片描述

4- 配置webpack


4.0 webpack.config.js 文件的作用

webpack.config.js 是 webpack 的配置文件。webpack 在真正开始打包构建之前,会 先读取这个配置文件,从而基于给定的配置,对项目进行打包。

注意:由于 webpack 是 基于 node.js 开发出来的 打包工具,因此在它的配置文件中,支持使用 node.js 相关的语法和模块进行 webpack 的个性化配置。

4.1 核心概念

4.1.1 入口 entry

入口起点(entry point) 指示 webpack 应该使用哪个模块,来作为构建其内部 依赖图(dependency graph) 的开始。进入入口起点后,webpack 会找出有哪些模块和库是入口起点(直接和间接)依赖的。

默认值是 ./src/index.js,但你可以通过在 webpack configuration 中配置entry属性,来指定一个(或多个)不同的入口起点。例如:

  • webpack.config.js
module.exports = {
	// 入口
	// entry:'./src/index.js',
	entry:{
		"vue":"./src/main.js",
		"base":"./src/index.js"
	},
};
4.1.2 出口 output

output 属性告诉 webpack 在哪里输出它所创建的 bundle,以及如何命名这些文件。主要输出文件的默认值是 ./dist/main.js,其他生成文件默认放置在 ./dist 文件夹中。

你可以通过在配置中指定一个 output 字段,来配置这些处理过程:

  • webpack.config.js
const path = require('path');

module.exports = {
	// 入口
	// entry:'./src/index.js',
	entry:{
		"vue":"./src/main.js",
		"base":"./src/index.js"
	},
 	// 输出
	output:{
		// 路径,__dirname 当前目录
		path:__dirname+"/dist",
		// 文件名称
		filename:'[name]-[hash:7].js'
	},
};
4.1.3 模式 mode

通过选择 development, productionnone 之中的一个,来设置 mode 参数,你可以启用 webpack 内置在相应环境下的优化。其默认值为 production

mode 节点的可选值有两个,分别是:

  • development
    • 开发环境、
    • 不会对打包生成的文件进行代码压缩和性能优化、打包速度快,
    • 适合在开发阶段使用
  • production
    • 生产环境
    • 会对打包生成的文件进行代码压缩和性能优化
    • 打包速度很慢,仅适合在项目发布阶段使用
  • webpack.config.js
module.exports = {
  mode: 'production',
};

4.2 在项目中配置 webpack

  1. 在项目根目录中,创建名为 webpack.config.js 的 webpack配置文件

在这里插入图片描述

  1. package.jsonscripts 节点下,新增 serve 脚本如下:

在这里插入图片描述

  1. 在终端中运行 npm run serve 命令,启动 webpack 进行项目的打包构建。

5- loader


5.1 概述

在实际开发过程中,webpack 默认只能打包处理以 .js 后缀名结尾的模块。其他非 .js 后缀名结尾的模块,webpack 默认处理不了,需要调用 loader 加载器才可以正常打包,否则会报错!

loader 加载器的作用:协助 webpack 打包处理特定的文件模块。

5.2 CSS处理器

5.2.1 概述

css-loader 分析css关系-合并一个css(import)

作用:css-loader处理 .css 文件 style-loader把css加载 到style 标签内

5.2.2 安装

运行如下的命令,即可在项目中安装此插件:

npm i css-loader style-loader -D

在这里插入图片描述

5.2.3 配置

在 webpack.config.js 写以下代码:

var HtmlWebpackPlugin = require('html-webpack-plugin'); //导入插件


module.exports = {
	module: {
		rules: [
			/* loader css-loader 让webpack拥有处理css的能力
			   遇到.css 结尾的文件都使用 这两个loader 处理
			 */
			{
				test: /\.css$/,
				use: ["style-loader", "css-loader"]
			},
		]
	},
}	

在这里插入图片描述

5.3 图片与文件处理

file-loader可以解析项目中的url引入(不仅限于css)使之指向正确的文件

url-loader 会将小图片生成base64编码格式(url-loader封装了file-loader)

image-webpack-loader 插件可将大的图片进行压缩从而缩小打包体积

html-loader html 代码里处理 img 标签的 loader。

5.3.1 安装

运行如下的命令,即可在项目中安装此插件:

npm i file-loader url-loader -D

在这里插入图片描述

5.3.2 配置

在 webpack.config.js 写以下代码:

var HtmlWebpackPlugin = require('html-webpack-plugin'); //导入插件


module.exports = {
	module: {
		rules: [
			/* loader css-loader 让webpack拥有处理css的能力
			   遇到.css 结尾的文件都使用 这两个loader 处理
			 */
			{
				test: /\.(png|jpeg|jpg|gif|svg|webp|ico|jfif)/,
				use:[{
					loader:"url-loader", //使用url加载器
					options:{
						limit:50000,//当文件小于50000字节 转换为base64格式(减少http请求次数)
						name:'images/[name].[ext]'  //[name]名称  [ext]后缀名
					}
				}]
			}
		]
	},
}	

在这里插入图片描述

5.3 两个案例

1.处理图片

  • 在index.js 写

在这里插入图片描述

  • 运行结果

在这里插入图片描述

注意:不需要再次配置

  • 导入css

在这里插入图片描述


2. 处理图标

  • 创建图标

在这里插入图片描述

6- plugin


6.1 webpack 插件的作用

通过安装和配置第三方的插件,可以拓展 webpack 的能力,从而让 webpack 用起来更方便。

注意: webpack-dev-server 会启动一个实时打包的 http 服务器

常用webpack 插件有如下:

  • webpack-dev-server

    • 每当修改了源代码,webpack 会自动进行项目的打包和构建
  • html-webpack-plugin

    • 可以通过此插件自定制 index.html 页面的内容
  • clean-webpack-plugin

    • 清零dist 目录,执行npm run build 需要清理上一次生成的内容

6.2 webpack-dev-server

webpack-dev-server 可以让 webpack 监听项目源代码的变化,从而进行自动打包构建

6.2.1 安装

运行如下的命令,即可在项目中安装此插件:

npm i webpack-dev-server -D

在这里插入图片描述

6.2.2 配置webpack.config.js

在 webpack.config.js 配置文件中,可以通过 devServer 节点对 webpack-dev-server 插件进行更多的配置,示例代码如下:

module.exports = {
	devServer: {
		proxy: {}, //代理
		host: "localhost", //域名
		port: 8080, //端口号
		hot: true, //热更新(文件保存,网页自动更新)
		open: true, //自动打开浏览器
	},
}	

在这里插入图片描述

6.2.3 修改package.json

修改 package.json -> scripts 中的 serve 命令如下:

	"scripts": {
		"build": "webpack",
		"serve": "webpack serve",
	},

运行 npm run build 命令,重新进行项目的打包

然后就可以npm run serve 运行项目,会自动跳转到浏览器,查看自动打包效果

6.3 html-webpack-plugin

html-webpack-plugin 是 webpack 中的 HTML 插件,可以通过此插件自定制 index.html 页面的内容。

需求:通过 html-webpack-plugin 插件,将 src 目录下的 index.html 首页,复制到项目根目录中一份!

作用:生成 html模板文件 ,自动把打包好的js插入到模板

6.3.1 安装 html-webpack-plugin

运行如下的命令,即可在项目中安装此插件:

npm i html-webpack-plugin -D

在这里插入图片描述

6.3.2 配置 html-webpack-plugin

在 webpack.config.js 写以下代码:

var HtmlWebpackPlugin = require('html-webpack-plugin'); //导入插件


module.exports = {
	plugins: [
		/* 把template 文件拷贝到dist目录并插入打包的js(main.js) */
		new HtmlWebpackPlugin({
			template: './public/index.html'
		})
	],
}	

在这里插入图片描述

6.4 clean-webpack-plugin

6.4.1 安装

运行如下的命令,即可在项目中安装此插件:

npm i clean-webpack-plugin -D
6.4.2 配置

在 webpack.config.js 写以下代码:

const { CleanWebpackPlugin } = require('clean-webpack-plugin');


module.exports = {
		plugins: [
		/* 把template 文件拷贝到dist目录并插入打包的js(main.js) */
		new HtmlWebpackPlugin({
			template: './public/index.html'
		}),
		//实例化好清理dist
		new CleanWebpackPlugin()
	],
}	
6.4.3 作用

作用:清零dist 目录,执行npm run build 需要清理上一次生成的内容。

在这里插入图片描述

7- 特殊标识


[hash] 把内容通过 hash 算法算出来的一串字符

  • [hash:7] 取hash 字符串前7个

[name] 原文件名称

[ext] 文件的后缀名


还有一部分,明天总结~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录算法训练营第六天|LeetCode 242. 有效的字母异位词 、349. 两个数组的交集 、 202. 快乐数、1. 两数之和

LeetCode 242. 有效的字母异位词 题目链接:242. 有效的字母异位词 方法一: 分析: 两个字符串里的每个字母的个数相等,那么我对每个字符串里的字符串都进行下排序,排出来后岂不是两个字符串的每个字母如果一一对应就…

高通平台开发系列讲解(AI篇)高通神经网络处理引擎工作流程详解

文章目录 一、Model to Runtime Workflow(模型运行流程)二、Basic SNPE Workflow(基本工作流程)2.1、Converting a Network Model(模型转换)2.2、Quantizing a Model(模型量化)沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要介绍高通平台神经网络处…

K_A07_002 基于 STM32等单片机驱动ULN2003模块按键控制步进电机正反转

目录 一、资源说明 二、基本参数 1.参数 2、引脚说明 三、驱动说明 步进电机驱动时序 反向输出 对应程序: 四、部分代码说明 1、接线说明 1.1、STC89C52RCULN2003模块 1.2、STM32F103C8T6ULN2003模块 五、基础知识学习与相关资料下载 六、视频效果展示与程序资料获取 七…

C#使用EPPlus操作Excel(读写)

之所以使用EPPlus操作Excel是因为微软自带的运行效率太低,数据多后会特别慢,不能满足现场要求。如果想速度快,而且只是读取Excel的配置还有另一个办法就是将Excel保存成xml文件,参考我的另一个文章:C# 读取XML格式的Ex…

概率统计·大数定律及中心极限定理【大数定律、中心极限定律】

这一章的学习更多的是为后面的知识作铺垫,所以内容比较少🍘🍘🍘(当然也减轻一点复习的负担🤗🤗🤗) 依概率收敛 需要概率P极限趋近于1 切比雪夫不等式的特殊情况 前提&…

数据库-sql执行深度剖析以及redo log和undo log(下)(二)

目录 buffer pool change Buffer Log Buffer redo log 随机IO/顺序IO redo log刷盘时机 redo logt特点 redo log结构 Adaptive Hash Index 磁盘区域 undo log 总结更新流程 BInlog 基于上一章sql执行原理基础上,我们来深入探讨sql更新的整个原理。 bu…

力扣(LeetCode)33. 搜索旋转排序数组(C++)

二分查找 二分的本质,是对某种性质的划分,一半满足,另一半不满足,即可划分。 比较 nums[mid]nums[mid]nums[mid] 和 nums[0]nums[0]nums[0] ,可以知道 midmidmid 左右哪一端有序。 如果左端有序,我们找往…

66.基于Django学习会话技术

1. 背景介绍 ​ HTTP协议有一个特性就是无状态的,是指协议对于交互性场景没有记忆能力。 ​ 随着动态交互的web应用的出现,HTTP的无状态特性严重阻碍了动态交互应用程序的发展,例如一些购物网站在进行购物时候都会进行了页面跳转/刷新&…

西门子 S7-1200 与 BL200PN 通信示例

准备 IO 模块:耦合器 BL200PN、数字量输出模块 M2082、数字量输入 M1081、 模拟量输入模块 M3401、模拟量输出 M4043。 2、BL200PN、S7-1200、PC 要同一局域网。将 BL200PN 和 S7-1200 上电,打开西 门子 TIA V13 软件,新建项目“BL200PN”…

SpringBoot开发的实用小工具集,YYDS

真正的大师,永远都怀着一颗学徒的心! 一、项目简介 springboot开发的实用小工具集 环境搭建说明 开发环境为jdk1.8,基于maven构建; 使用Idea或者eclipase开发; 基于SpringBoot搭建,大大简化了配置操作;…

DBCO-mPEG2000,二苯并环辛炔-mPEG MW 2000具有亲和力和稳定性

DBCO-mPEG2000白色固体, DBCO试剂在水性缓冲液中具有快速的亲和力和稳定性,可用于以高特异性和反应性标记叠氮化物修饰的生物分子。带有 PEG 臂的试剂会增加化合物的亲水性。西安凯新生物科技有限公司​DBCO 试剂已广泛应用于生物偶联、标记和化学生物学…

你需要知道的前端知识点,V8引擎是什么?采用哪些GC算法?

一、简单介绍V8引擎 V8引擎是一款主流的JavaScript执行引擎;V8执行引擎采用及时编译(执行速度提升);V8引擎中内存设置有上限(下方进行详解); 二、V8回收策略 采用分代回收思想;内存分为新生代对象存储与老生代对象存储;针对不同…

Colmap 实用教程 —— Command-line Interface

https://colmap.github.io/index.html Windows 通过 COLMAP.bat,Linux 通过 colmap 使用命令行调用 Colmap 工具。 Structure-from-Motion 简要介绍 从大范围来看的话,整个流程可以分成以下三个阶段: Feature detection and extractionFe…

MQ通道常用知识列举(一)

MQ的几个基本组件: 1. 什么是通道 通道是分布式队列管理器在IBM MQ MQI 客户端和IBM MQ服务器之间或两个IBM MQ服务器之间使用的逻辑通信链路。通道用于将消息从一个队列管理器移动到另一个队列管理器。 2, 启动通道 对发送方、服务器和请求方通道使用 MQSC 命令…

CentOS 7.6安装JDK8过程(通过官网下载压缩包方式)

Oracle官网JDK下载地址 JDK8下载地址 选择tar.gz压缩包进行下载 复制下载链接,登录服务器,执行wget xxxxx(刚刚复制的下载地址) 下载完毕后,执行解压命令tar -zxvf xxxxx.tar.gz 配置/etc/profile 执行命令vim /etc…

把Mybatis Generator生成的代码加上想要的注释

作者:王建乐 1 前言 在日常开发工作中,我们经常用Mybatis Generator根据表结构生成对应的实体类和Mapper文件。但是Mybatis Generator默认生成的代码中,注释并不是我们想要的,所以一般在Generator配置文件中,会设置不…

Java题目集

Java冒泡排序和查找冒泡排序,从小到达排列查找,某一个字符串输出如下数据输出杨辉三角形冒泡排序,从小到达排列 分析:数组 [15,21,20,35,10] 第 1 轮排序: 目标把最大数放在最后 第 1 次比较 [15,21,20,35,10] 第 2 次比较 [15,21,20,35,10…

目标检测 YOLOv5 - ncnn模型的加密 C++实现封装库和Android调用库示例

目标检测 YOLOv5 - ncnn模型的加密 C实现封装库和Android调用库示例 flyfish 文章目录目标检测 YOLOv5 - ncnn模型的加密 C实现封装库和Android调用库示例前言模型版本库的版本示例程序的编译环境模型的转换库的制作主要接口部分模型初始化部分推理的输入输出CMakeList的配置示…

LeetCode-878-第N个神奇数字

1、二分查找 如果我们用函数f(x)f(x)f(x)表示数字小于x的神奇数字的个数,显然我们可以得到如下的公式:f(x)⌊xa⌋⌊xb⌋−⌊xc⌋f(x)\left \lfloor \frac{x}{a} \right \rfloor\left \lfloor \frac{x}{b} \right \rfloor-\left \lfloor \frac{x}{c} \ri…

门店管理|火锅店数字化系统转型

火锅几乎是每个人的最爱,吃着火锅喝着酒,生活日子乐逍遥。在很多火锅店里,我们经常可以看见客人爆满。虽然这几天疫情的冲击导致不少餐饮商家生存很难,但随着对疫情的有效控制,餐饮行业正在回暖。 无论以前还是现在&am…