webpack的require是如何工作的?

世有因果知因求果發表於2018-04-05

https://stackoverflow.com/questions/35625593/how-does-webpacks-require-work

wepback的require函式呼叫類似於nodejs cmd 的require呼叫.https://nodejs.org/api/modules.html#modules_all_together

以上鍊接可以清除地看到require被呼叫時他是如何找到require函式應該返回的物件或函式的。如果你require 'jquery',他首先檢視是否是一個原生的module,如果不是,則找到node_modules目錄(因為沒有/或者./在目錄的前面)既然jquery是node_modules下面的一個folder,隨後就檢查jquery目錄下的package.json檔案,檢視該.json檔案中的main申明部分,隨後呼叫這個main定義的部分程式碼,任何在該嗲嗎中返回的內容就作為require返回的內容。需要注意的是require本身具有cache特性。也就是說modules會在首次load載入之後被cache起來。這也意味著每個require('foo')呼叫都會返回相同的object.多次呼叫require('foo')並不會導致module的code被執行多次。這是一個非常重要的feature!!如果希望每次require('foo')時執行都執行module的部分程式碼,那麼需要export一個function,然後呼叫哪個function

相關文章