Webpack入门|青训营笔记

35 阅读3分钟

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

今天主要学习了Webpack的定义以及使用方法,重点在于Webpack的本质、定义解析、流程类配置、处理 CSS、接入 Bable、生成 HTML以及使用 Webpack - 工具线Webpack的优势。

一、什么是Webpack

一个前端项目由很多资源构成。我们需要把它打包起来,而Webpack则可以实现打包的功能,它是一个模块化打包工具,将不同的资源和文件,进行打包,合并在一个文件里。

在旧时代,人们经常手动管理这些资源。

image.png 但,依赖手工,比如有50个JS文件...操作,过程繁琐;当代码文件之间有依赖的时候,就得严格按依赖顺序书写;开发与生产环境一致, 难以接入TS或JS新特性;比较难接入Less、Sass等工具;JS、图片、CSS资源管理模型不一致这些都是旧时代非常突出的问题,对开发效率影响 非常大。

为了解决这个问题,出现了很多工具。

image.png

而Webpack本质上是一种前端资源编译、打包工具。它可以:

  • 多份资源文件打包成一个Bundle
  • 支持Babel、Eslint、 TS、 CoffeScript、 Less、 Sass
  • 支持模块化处理css、图片等资源文件
  • 支持HMR+开发服务器
  • 支持持续监听、持续构建
  • 支持代码分离
  • 支持Tree-shaking
  • 支持Sourcemap

image.png

二、使用Webpack

示例

image.png

核心流程

1.入口处理

从'entry'文件开始,启动编译流程

2.依赖解析

从entry' 文件开始,根据require' or import' 等语句找到依赖资源

3.资源解析

根据module'配置,调用资源转移器,将png、css等非标准JS资源转译为JS内容

4.资源合并抱

将转译后的资源内容合并打包为可直接在浏览器运行的JS文件

模块化+一致性

  1. 多个文件资源合并成一个,减少http 请求数
  2. 支持模块化开发
  3. 支持高级JS特性
  4. 支持Typescript、CoffeeScript 方言
  5. 统一图片、CSS、 字体等其它资源的处理模型
  6. Etc..

如何使用Webpack

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

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

image.png

使用Webpack-流程类配置

image.png

使用Webpack-配置总览

按使用频率:

  • entry/output
  • imodule/ plugins
  • mode
  • watch/devServer/devtool

image.png

使用Webpack-处理CSS

image.png image.png

使用Webpack-接入Babel

image.png image.png

使用Webpack-生成 HTML

image.png image.png

使用Webpack-工具线

image.png

使用Webpack-HMR

image.png image.png

使用Webpack-Tree- Shaking

image.png image.png Dead Code

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

Tree -Shaking

  • 模块导出了,但未被其它模块使用

image.png

其他工具

  • 缓存
  • Sourcemap
  • 性能监控
  • 日志
  • 代码压缩
  • 分包

三、总结

今天通过对Webpack的定义以及使用方法的学习,我理解了Webpack这个新的工具,知道了它的优势:它可以把很多文件打包整合到一起, 缩小项目体积, 提高加载速度。并且通过这个知道了它在Web中的使用,学会了应用它在实际的项目中,又掌握了一个前端开发的工具-Webpack。