理解插件 | 青训营笔记

34 阅读3分钟

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

一、本节课重点内容

本节课将带来 Webpack 的另一个重要的扩展方式——插件,在日常的作业过程中,Webpack 的很多的重要能力需要通过插件来实现,插件架构的存在涉及诸多工程化工具与开发框架,通过插件可以提供工具更多的扩展性。

课程重点内容总结归纳如下所示:

  1. 插件定义解析
  2. 插件设计优势
  3. Loader 与插件的差异
  4. Webpack 学习方法推荐

二、详细知识点介绍

插件是什么?为什么这么设计? 很多知名工具,如:

  • VS Code、Web Storm、Chrome、 Firefox
  • Babel、Webpack、 Rollup、 Eslint
  • Vue、Redux、Quill、 Axios

等等,都设计了所谓"插件" 架构,为什么?

因为我们需要利用插件,来提升整个应用的拓展性。

image.png 这是一个特别复杂的过程,那么:

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

它会极大的简化我们的工程量。 创建一个插件的实例,插件用起来十分的简单,但是写起来十分的复杂麻烦。

首先,我们围绕着“钩子”说起: image.png

钩子的核心信息

  1. 时机:编译过程的特定节点,Webpack会以钩子形式通知插件此刻正在发生什么事情;
  2. 上下文 :通过tapable 提供的回调机制,以参数方式传递上下文信息;
  3. 交互:在上下文参数对象中附带了很多存在side effect的交互接口,插件可以通过这些接口改变。 image.png
  • 时机:‘compier.hooks.compilation’(什么时候触发)
  • 参数:‘compilation’等(专属对象)
  • 交互:‘dependencyFactories.set’(与上下文进行交互)

image.png

  1. 入门应用:理解打包流程

熟练掌握常用配置项、Loader、 插件的使用方法,能够灵活搭建集成Vue、 React、Babel、 Eslint、 Less、Sass、图片处理等工具的Webpack环境掌握常见脚手架工具的用法,例如: Vue- cli、 create-react- app、 @angular/cli,我们可以对其进行简易的使用即可;

  1. 进阶:理解Loader、 Plugin 机制,能够自行开发Webpack 组件,简单的进行开发,对机制与核心原理有自己的理解
  • 理解常见性能优化手段,并能用于解决实际问题
  • 理解前端工程化概念与生态现状
  1. 大师级:阅读源码,理解Webpack编译、打包原理,甚至能够参 与共建。

知识点导航:

简单的理解功能,掌握一些常用的插件的用法,掌握一些核心的机制与内容,能够简单的使用现成的脚手架来进行项目的搭建即可。 image.png

三、总结

理解了插件的作用,了解了设计一个能够使用的呃插件需要的操作。 老师也帮助我找到了一个插件学习的新手路径,就是先理解插件的简单概念,能够使用最基础的编译环境来进行简单的插件代码学习,逐渐试应开发、掌握基础的脚手架的用法;然后再逐渐的深入学习,开始进行实际问题的解决,加入自己对核心理论的理解与思考。