前端技术栈之构建webpack知识体系 | 青训营笔记

118 阅读2分钟

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

前端技术栈之构建webpack知识体系| 青训营笔记

为什么要学习Webpack?

  • webpack 是代码编译工具,有入口、出口、loader 和插件。webpack 是一个用于现代 JS 应用程序的静态模块打包工具
  • 理解前端工程化概念,工具,目标
  • 一种团队主要有那么几个熟悉Webpack,某种程度上可以成为个人的核心竞争力。
  • 高阶前端必经之路

什么是webpack

前端项目由什么构成?

  • 资源如:PNG,JPG,GIF,WEBP,JS,TS,CSS,Less,Vue ...

当然,可以手动管理这些资源:但

  • 依赖手工,比如50个JS文件...操作,过程比较繁琐。
  • 当代码文件之间有依赖的时候,就得严格依赖顺序书写
  • 开发与生产环境一致,难以接入TS或JS新特性。
  • JS,图片,CSS 资源管理模型不一致

这些都是旧时代非常突出的问题,对开发效率影响非常大,知道出现了很多工程化工具,如:

  • Webpack
  • Vite
  • Gulp

某种程度上正是这些工具的出现,才有了前端工程这一概念。

Webpack本质是一种前端资源编译,打包工具。

  • 多份资源文件打包成一个Bundle
  • 支持 Babel,Eslint, TS ...
  • 支持模块化处理css,图片 等资源文件。
  • 支持HMR + 开发服务器
  • 支持持续监听,持续构建
  • 支持代码分离

使用Webpack

  1. 安装 npm i -D webpack webpack-cli
  2. 执行编译命令npx webpack

核心流程 --极度简化版

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

模块化+一致性

  1. 多个文件资源合并成一个,减少HTTP 请求数
  2. 支持多模块化开发
  3. 支持高级JS 特性
  4. 支持 typescript , coffeeScript 方言
  5. 统一图片,css ,字体,等其他资源的处理模型

Webpack 两大类

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

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