摘要:打開是個構(gòu)造函數(shù),定義了一些靜態(tài)屬性和方法我們先看在插件下地址上面寫的解釋就跟沒寫一樣在文件下我們看到輸出的一些對象方法每一個對應(yīng)一個模塊而在下引入的下面,我們先研究引入的對象的英文單詞解釋,除了最常用的點擊手勢之外,還有一個意思是水龍頭進
打開compile
class Compiler extends Tapable { constructor(context) { super(); this.hooks = { //... } } }
Compiler是個構(gòu)造函數(shù),定義了一些靜態(tài)屬性和方法
我們先看 Tapable
Tapable在node_modules插件下
git地址
上面寫的解釋Just a little module for plugins就跟沒寫一樣
在lib/index.js 文件下
exports.__esModule = true; exports.Tapable = require("./Tapable"); exports.SyncHook = require("./SyncHook"); exports.SyncBailHook = require("./SyncBailHook"); exports.SyncWaterfallHook = require("./SyncWaterfallHook"); exports.SyncLoopHook = require("./SyncLoopHook"); exports.AsyncParallelHook = require("./AsyncParallelHook"); exports.AsyncParallelBailHook = require("./AsyncParallelBailHook"); exports.AsyncSeriesHook = require("./AsyncSeriesHook"); exports.AsyncSeriesBailHook = require("./AsyncSeriesBailHook"); exports.AsyncSeriesWaterfallHook = require("./AsyncSeriesWaterfallHook"); exports.HookMap = require("./HookMap"); exports.MultiHook = require("./MultiHook");
我們看到輸出的一些對象方法
每一個對應(yīng)一個模塊
而在webpakck Compiler.js下引入的下面
const { Tapable, SyncHook, SyncBailHook, AsyncParallelHook, AsyncSeriesHook } = require("tapable");
so,我們先研究引入的對象
tap 的英文單詞解釋,除了最常用的 點擊 手勢之外,還有一個意思是 水龍頭
進一步可以理解為tapable是管理事件流的意思
借用網(wǎng)上的一張圖,tapable是事件管家
之所以名稱有差距,是版本問題導(dǎo)致的,目前的是1.1.0版本,我們看看git果然證明了v0.2.8以前的全部都是下圖函數(shù)所示
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/101089.html
摘要:編寫良好的模塊提供了可靠的抽象和封裝邊界,構(gòu)成了一致的設(shè)計和明確的目的。塊此特定術(shù)語在內(nèi)部用于管理捆綁過程。捆綁包由塊組成,其中有幾種類型例如入口和子。總結(jié)一個塊是進程中的一組模塊,一個是一個發(fā)出的塊或一組塊。 我們先看一下 compilation是什么?是一個很大的對象打印key值 [ _pluginCompat, hooks, name, compiler, res...
摘要:從出來接著我們看大法,打印一下感覺之前所以的對象都放在了一個合集里,給人而全的感覺里面主要含有一個對象,,輸出的,等給每次打包一個值,代表唯一性天啊 從compilation出來接著我們看 const stats = new Stats(compilation); Stats.js log大法,打印一下 stats let Stats = { compilation:{ ...
摘要:小尾巴最終返回了屬性掛載把引入的函數(shù)模塊全部暴露出來下面暴露了一些插件再通俗一點的解釋比如當(dāng)你你能調(diào)用文件下的方法這個和上面的不同在于上面的是掛在函數(shù)對象上的正題要想理解必須要理解再寫一遍地址我們先簡單的理解它為一個通過注冊插件是插件的事 webpack.js小尾巴 const webpack = (options, callback) => { //... if (...
摘要:它的行為和的方法相似,用來注冊一個處理函數(shù)監(jiān)聽器,來在信號事件發(fā)生時做一些事情他最終還是調(diào)用進行存儲。而就全部取出來執(zhí)行。總結(jié)上面這些知識是理解插件和運行原理的前置條件更多內(nèi)容待下次分解參考源碼版本說明參考鏈接 引言 去年3月的時候當(dāng)時寫了一篇webpack2-update之路,到今天webpack已經(jīng)到了4.2,更新挺快的,功能也在不斷的完善,webpack4特性之一就是零配置, w...
摘要:源碼分析安裝好包,根據(jù)上述方法,我們運行如下命令初始化在構(gòu)造函數(shù)處打上斷點,可以看到繼承自,上面定義了一個函數(shù)。因為函數(shù)定義在原型上,并通過在構(gòu)造函數(shù)中賦值。 Webpack源碼閱讀之Tapable webpack采用Tapable來進行流程控制,在這套體系上,內(nèi)部近百個插件有條不紊,還能支持外部開發(fā)自定義插件來擴展功能,所以在閱讀webpack源碼前先了解Tapable的機制是很有必...
閱讀 2461·2021-11-22 15:35
閱讀 3756·2021-11-04 16:14
閱讀 2685·2021-10-20 13:47
閱讀 2487·2021-10-13 09:49
閱讀 2064·2019-08-30 14:09
閱讀 2359·2019-08-26 13:49
閱讀 879·2019-08-26 10:45
閱讀 2762·2019-08-23 17:54