认识Webpack|青训营笔记

76 阅读2分钟

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

一、为什么要学习webpack?

1、前端工程化重要的工具
2、团队中一定要有部分人熟悉webpack
3、高阶前端的必经之路

二、什么是webpack?

旧时代时,资源过多、依赖繁琐等许多问题都会影响开发效率 所以后来就出现了webpack、vite、rollup等工程化工具

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

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

三、理解Loader

为了处理非标准JS资源,设计出的资源翻译模块 作用是为了将资源编译成标准JS

1、使用Loader:

使用npm add -D css-loader style-loader less-loader安装Loader,然后添加module处理css文件

2、认识loader

①链式调用:
  • less-loader:实现less转换成css
  • css-loader:将css包装成符合js语法的内容
  • style-loader:将css模块抱紧require语句,运行时调用injectStyle等函数将内容注入到页面的style标签
②其他特性:

特点:

  • 链式执行
  • 支持异步执行
  • 分为normal、pitch两种模式
③常见loader:

image.png 以上是常见的loader,可以站在使用角度去掌握这些常见loader的功能、配置和方法

四、理解插件

webpack有很多功能都是基于插件实现的
1、插件架构精髓:对扩展开放、对修改封闭

2、插件围绕钩子(hooks)展开

钩子的核心信息:

  • 时机:编译过程的特定节点,webpack会以钩子形式通知插件此刻正在发生什么事情
  • 上下文:通过tapable提供的回调机制,以参数方式传递上下文信息
  • 交互:在上下文参数对象中附带了很多存在side effect的交互接口,插件可通过这些接口改变