Webpack | 青训营笔记

62 阅读1分钟

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

Webpack概述

Webpack本质上是一种前端资源打包工具
    多份资源文件打包成一个Bundle;
    支持Babel、Eslint、TS、CoffeScript、Less等;
    支持模块化处理css、图片等资源文件;
    支持HMR+开发服务器;
    支持持续监听、持续构建;
    支持代码分离;
    支持Sourcenmap;
    ...

使用Webpack

image.png

核心流程
    1.入口处理——从'entry'文件开始,启动编译流程;
    2.依赖解析——从'entry'文件开始,根据'require' or 'import'等语句找到依赖项;
    3.资源解析——根据'moudule'配置,调用资源转译器,将css等非标准JS资源转译为JS内容;
    4.将转译后的资源内容合并打包为可直接在浏览器运行的JS文件;
    
模块化+一致性
    多个文件资源合并成一个,减少http请求数;
    支持模块化开发;
    支持高级JS特性;
    支持TypeScript、CoffeeScript方言;
    同一图片、CSS、字体等其他资源处理模型;
    ...
    
对于Webpack的基本使用可以查看Webpack官方文档;

image.png image.png

理解Loader

为了处理非标准JS资源,设计出资源翻译模块——Loader用于将资源翻译为标准JS;

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

less-loader:实现less => css的转换;
css-loader:将CSS包装成类似module.exports = "${css}"的内容,包装后的内容符合JS语法;
style-loader:将css模块包进require语句,并在运行时调用injectStyle等函数将内容注入到页面的style标签;

image.png

image.png

image.png