webpack5基础-学习笔记

学习资源:https://www.bilibili.com/video/BV1964y1k7Hm?from=search&seid=8848052436743801145&spm_id_from=333.337.0.0

1. webpack简介

1.1 概念

  • 构建:通过编译、格式化校验、压缩等操作,将不支持的代码转化为支持的代码;
  • 打包:将多个文件合并成一个文件(bundle.js),避免引入多个文件页面加载时发送多个http请求

1.2 功能

在这里插入图片描述

2. webpack核心概念

2.1 入口

webpack入口

2.2 出口

在这里插入图片描述

2.3 loader加载器

loader可以配置将打包后的其他文件集成到打包后的js文件中(bundle.js),也可以将打包后的文件单独生成一个模块。
在这里插入图片描述

2.4 plugin插件

在这里插入图片描述
loader和plugin本质上都是npm包,使用时需要下载。

2.5 模式

在这里插入图片描述

2.6 模块

在这里插入图片描述

2.7 依赖图

从入口文件入手,通过依赖关系组织整个项目。
在这里插入图片描述

2.8 简单实践

在这里插入图片描述
(1) 项目结构
在这里插入图片描述
(2) 执行webpack命令前可先通过webpack help命令查看webpack常用命令,同时可查看webpack是否安装可用,若无法势识别命令则可尝试全局安装webpack。在这里插入图片描述
(3) 直接执行命令:webpack,会以默认的入口文件路径(./src/index.js)和出口文件路径(./dist)以及默认的打包模式(production——会压缩混淆)进行打包。可通过命令指定打包路径和模式(也可通过配置文件设置)。
在这里插入图片描述
(4) 打包出来的main.js中是一个自执行函数。
在这里插入图片描述
函数内容如下:
在这里插入图片描述
在这里插入图片描述

3. webpack配置

在这里插入图片描述
在这里插入图片描述
官方配置(非常详细):https://www.webpackjs.com/configuration/
在这里插入图片描述

3.1 打包CSS

3.1.1 打包逻辑

在这里插入图片描述

(1) webpack.config.js中进行配置:
在这里插入图片描述
(2) 打包结果:
在这里插入图片描述
在这里插入图片描述

3.1.2 打包LESS / SASS

在这里插入图片描述
在这里插入图片描述
(1) 创建less文件
在这里插入图片描述
(2) 入口文件中引入
在这里插入图片描述
(3) 下载less和less-loader
在这里插入图片描述
(4) 在webpack.config.js配置文件中配置less-loader
在这里插入图片描述
(5) 打包结果
在这里插入图片描述
在这里插入图片描述

3.1.3 打包成独立CSS文件

在这里插入图片描述
(1) webpack.config.js中进行配置:可在npmjs.com网站搜索查看插件的所有配置项。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
(2) 打包结果
在这里插入图片描述

3.1.4 添加样式前缀

在这里插入图片描述
(1) webpack.config.js中的配置
处理less文件时需要先使用less-loader,故应放于css-loader之后,less-loader之前。
在这里插入图片描述
(2) 在项目目录下新建post.config.js,配置加载autoprefixer
在这里插入图片描述
(3) 配置兼容的浏览器列表
在这里插入图片描述
(4) 打包结果
在这里插入图片描述

3.1.5 格式校验

在这里插入图片描述在这里插入图片描述
(1) webpack.config.js中配置插件
在这里插入图片描述
(2) 指定stylelint规则的配置方式
在这里插入图片描述
可以在stylelint官网:https://stylelint.docschina.org/user-guide/rules/ 上查找各项规则的配置
在这里插入图片描述

3.1.6 压缩CSS

可通过optimize-css-assets-webpack-plugin插件或者css-minimizer-webpack-plugin插件进行css压缩,webpack5建议使用css-minimizer-webpack-plugin插件,其配置方法可在https://www.npmjs.com/package/css-minimizer-webpack-plugin查询。
在这里插入图片描述
在这里插入图片描述

3.2 打包html

在这里插入图片描述
(1) 在webpack.config.js中配置插件
在这里插入图片描述

  • 注:html-webpack-plugin插件指定的html变量只有在模板html中通过EJS语法使用才会生效,若未使用模板则打包时会使用默认的EJS模板(即一个标准的html结构模板),此时变量没有效果
  • EJS是一个嵌入式JS模板引擎,官网:https://ejs.bootcss.com/

在这里插入图片描述
(2) 压缩html
在这里插入图片描述在这里插入图片描述

3.3打包JS

3.3.1 编译JS

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
(1) 在webpack.config.js中配置babel-loader
在这里插入图片描述
(2) babel-loader只能解析ES6基础语法,新增高级语法(例如Promise或Array.from)不能解析,需要使用@babel/polyfill或者core-js
在这里插入图片描述在这里插入图片描述在这里插入图片描述

3.3.2 JS格式校验

在这里插入图片描述在这里插入图片描述
(1) 在webpack.config.js中配置
在这里插入图片描述在这里插入图片描述
(2) 在package.json中配置(安装eslint-plugin-import插件读取配置)
在这里插入图片描述
(3) 常规格式校验报错解决办法
在这里插入图片描述在这里插入图片描述

3.4 打包图片

3.4.1 使用file-loader

在这里插入图片描述
(1) 在入口文件index.js中引入图片,并添加到界面
在这里插入图片描述
(2) 在webpack.config.js中的module模块配置file-loader
在这里插入图片描述
(3) 打包后会将需要使用的图片复制到出口目录下(按需加载图片,未使用的图片不会复制到打包目录下)。
但若在css文件中使用图片,例如设置背景图片,且使用了mini-css-extract-plugin插件,则会因为打包后css变为输出目录下css目录中的独立文件而导致图片路径找不到,需要在将CSS单独打包成文件的插件mini-css-extract-plugin中配置打包基础路径(打包时会自动添加到所有css中引用图片路径前面作为基础路径)。
在这里插入图片描述

注:以上为webpack4用法,webpack5中废弃raw-loader、url-loader、file-loader等,使用资源模块替代,若此时使用废弃loader,会导致资源重复加载,且文件无法显示的情况。
原因:

  • 使用资源加载器(loader)会与webpack5.0内置的asset资源模块冲突,导致资源重复加载。
    解决办法:设置asset的模块类型为 “javascript/auto”
  • raw-loader、url-loader、file-loader都是采用es6语法规范的,而不是commonjs规范。
    解决办法:可通过esModule属性来设置是否关闭es6语法规范。

    在这里插入图片描述

3.4.2 使用url-loader

在这里插入图片描述
在这里插入图片描述
例如:
在这里插入图片描述
注:ur-loader可替换file-loader,但使用ur-loader时不可卸载file-loader
在这里插入图片描述
在这里插入图片描述

3.4.3 处理打包后html文件中图片加载路径

(1) 模板html文件中直接引入图片
在这里插入图片描述
(2) 使用html-loader处理html,它会将html导出为字符串,使html能够通过import形式引入js文件中,例如:

import html from "./file.html";

在导入过程中会将html文件中涉及的资源信息(即一般通过src链接的图片、音频、视频等信息)通过
const img = require(’./image.png’) 或 **import img from “./image.png”**形式引入,从而使得url-loader可以处理对应资源文件。
注:需要在html-loader和url-loader中都关闭esModule语法规范
在这里插入图片描述在这里插入图片描述
(3) 使用html-loader后,按照模板html打包生成的html中的EJS语法失效,无法正常展示。
解决方法:如果模板中不需要使用EJS语法,且html模板中有需要处理的src资源,则使用html-loader即可;若需要使用EJS语法,则使用html-webpack-plugin处理,将模板文件改为.ejs格式,且将模板文件中使用src链接的资源信息改为EJS语法格式,最后将html-webpack-plugin配置中的模板文件后缀名改为 .ejs。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.5 打包字体

在这里插入图片描述
(1) 下载引用字体文件:阿里巴巴 https://www.iconfont.cn/
在这里插入图片描述
(2) 在webpack.config.js的module模块配置file-loader
在这里插入图片描述

3.6 打包无需处理的文件

复制无需处理的其他类型文件(例如网页标题缩略图标favicon)到打包目录:使用copy-webpack-plugin插件。
在这里插入图片描述
在webpack.config.js中配置插件:
在这里插入图片描述
在这里插入图片描述

3.7 打包前清空历史文件

在这里插入图片描述在这里插入图片描述在这里插入图片描述

4. 资源模块 (Asset Modules)

在这里插入图片描述在这里插入图片描述
可处理字体文件也可处理图片文件:
在这里插入图片描述
在这里插入图片描述

5. webpack dev server

在这里插入图片描述

5.1 devServer配置

在webpack.config.js中进行配置:
在这里插入图片描述
注:webpack 5.3x版本可以使用contentBase,目前的5.66.0弃用contentBase
在这里插入图片描述
可在https://webpack.docschina.org/configuration/dev-server/查看webpack5最新配置
在这里插入图片描述

5.2 热更新

在这里插入图片描述
注:webpack热更新会将项目打包到内存中,每次更新从内存中获取最新内容,与执行webpack命令打包到项目出口文件下的内容无关(即使删掉输出目录下的文件也没有影响)。
在这里插入图片描述

5.3 proxy接口代理

http同源策略:访问协议、域名、访问端口号有一个不同则无法访问,需要跨域。
在这里插入图片描述
:
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值