1. Hook 简介
Hook 这个词很多人都听过,就算不知道,也直接或间接地用到过。它通常是系统或框架开放出来供上层应用开发者执行代码的一种方式。例如,Vue 的生命周期钩子,本质就是框架内部在对应时机调用了组件定义的钩子函数;此外,Webpack 所使用 tapable
更是将 hook
的应用发挥的淋漓尽致,tapable
最值得称赞的就是,它对 hook
做了很好的抽象和分类。
2. Hook 的表现形式
对于开发者,Hook 通常以钩子函数形式存在。开发者注册钩子函数,系统或者框架决定在什么时候调用钩子函数,某种意义上,它和事件回调函数有异曲同工之妙。从数据结构的设计上,我们可以使用键值对(散列表,JS中的普通对象)来表示系统提供的钩子,其中,键代表钩子名称,值是钩子函数数组。
例如,下面的代码包含一个init
钩子,这个钩子注册了3个钩子函数:fn1, fn2, fn3
。
1 | const hooks = { |