webpack知识体系| 青训营笔记

58 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第12天。

前言

Webpack 是一个前端资源加载/打包工具。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源。

本章节基于 Webpack3.0 测试通过。

从图中我们可以看出,Webpack 可以将多种静态资源 js、css、less 转换成一个静态文件,减少了页面的请求。

为什么要学习webpack

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

这门课的目标

  • 理解Vebpack的基本用法
  • 通过介绍Vebpack功能、Loader与Plugin组件设计,建立一个知识体系
  • 不会事无巨细,介绍Webpack所有
  • 也不是深入源码,讲解底层实现原理

核心流程-极简版

image.png

使用webpack

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

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

image.png

配置总览

按使用频率:

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

认识Loader:其它特性

特点:

  • 链式执行
  • 支持异步执行
  • 分normal、,pitch两种模式

image.png

如何编写Loader

module.exports function(source,sourceMap?,data?){
//source为Loader的输入
/可越是文件内容,也可能是上一个1 oader处理知果
return source;

常见Loader

站在使用角度,建议掌握这些常见 Loader的功能、配置方法

image.png

进阶篇:理解插件

插件是什么?为什么这么设计?

这是一个特别复杂的过程,那么: 新人需要了解整个流程细节,上手成本高 功能迭代成本高,牵一发动全身 功能僵化,作为开源项目而言缺乏成长性 Blabla 心智成本高=>可维护性低=>生命力弱 插件架构精髓:对扩展开放,对修改封闭

image.png

总结

  • 我们前面学了:
  • ,Nebpack的作用
  • 理解Webpack配置结构,学习关键配置项
  • Loader的作用与常用Loader
  • 插件基本形态与作用