构建Webpack知识体系 | 青训营笔记

51 阅读2分钟
这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天

为什么要学习Webpack?

  • 理解前端“工程化”概念、工具、目标
  • 一个团队总要有那么几个人熟悉Webpack,某种程度上可以成为个人的核心竞争力
  • 高阶前端必经之路

总体课程目标

  • 理解Webpack的基本用法
  • 通过介绍Webpack功能、Loader与Plugin组件设计,建立一个知识体系。

1.什么是Webpack?

前端项目由什么构成? ——资源

image.png Webpack本质上是一种前端资源编译打包工具

  • 多份资源文件打包成一个bundle
  • 支持模块化处理css、图片等资源文件
  • 支持HMR+开发服务器
  • 支持代码分离
  • 支持Tree-shaking
  • 支持Sourcemap

image.png

2.使用Webpack

1. 安装

npm i -D webpack webpack-cli

2. 编辑配置文件

image.png

3.执行编译命令

npx webpack

核心流程

  1. 入口处理:从'entry文件开始,启动编译流程
  2. 依赖解析:从'entry文件开始,根据'require or import 等语句找到依赖资源
  3. 资源解析:根据 module配置,调用资源转移器,将png、css 等非标准JS资源转译为JS内容
  4. 资源合并打包:将转译后的资源内容合并打包为可直接在浏览器运行的JS文件

围绕“配置展开”

关于Webpack的使用方法,基本都围绕“配置展开,而这些配置大致可划分为两类:

  • 流程类:作用于流程中某个or若干个环节直接影响打包效果的配置项
  • 工具类:主流程之外,提供更多工程化能力的配置项

流程类配置

使用Webpack——处理CSS

问题:

  • Loader有什么作用?为什么这里需要用到css-loader、style-loader
  • 与旧时代——在HTML文件中维护css相比,这种方式会有什么优劣处?
  • 有没有接触过Less、Sass、Stylus这一类CSS预编译框架?如何在Webpack接入这些工具?

Babel

处理JS的代码转译工具
Babel 默认使用一组 ES2015 语法转换器,允许你使用新的语法,无需等待浏览器支持。
把其他版本的JS代码给统一

Tree-shaking

用于处理Dead Code

  • 代码没有被用到,不可到达
  • 代码的执行结果不会被用到
  • 代码只读不写