Webpack知识体系|青训营笔记

68 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第10天,关于Webpack知识体系的知识点总结,包括:什么是webpack和使用Webpack。

———Zy_Thoma

什么是webpack

过去存在的问题:

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

webpack本质上是一种前端资源编译、打包工具

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

使用Webpack

核心流程——极度简化版

IMG_0046.PNG

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

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

模块化+一致性

  • 多个文件资源合并成一个,减少http请求数
  • 支持模块化开发
  • 支持高级JS特性
  • 支持TypeScript、CoffeeScript方言
  • 统一图片、CSS、字体等其他资源的处理模型
  • ...

流程类配置

BA33264478799FFB446F140AFC712149.png

19DB4BADC1ABA082E876AA4482885AF8.png

问题:

  • Loader有什么作用?为什么这里需要用到css-loader、style-loafer

  • 与旧时代—在HTML 文件中维护 css 相比,这种方式会有什么优劣处?

  • 有没有接触过 Less、Sass、 Stylus 这一类 CSS 预编译框架?如何在 Webpack 接入这些工具?

  • Baael具体有什么功能?

  • Babel与Webpack分别解决了什么问题?为何两者可以协作到一起?

  • 除了上面提到的内容,还有哪些配置可以划分为“流程类”配置?

  • 工具类配置具体有什么作用?包括·devtool/cache/stat·等。