一、webpack中hash,chunkhash,contenthash的區別
hash:表示所有文件哈希值相同,如果任意文件內容發生變化,則再次打包后,所有哈希值均改變且相同。即當任意module發生改變時,所有bundle的hash都改變且相同。
當有多個chunk,形成多個bundle時,如果只有一個chunk和bundle內容發生改變,會導致其他所有的bundle的哈希值都發生改變,因為大家共用一個hash,這個時候chunkhash的作用就體現出來了。
chunkhash:根據不同的入口文(Entry)進行依賴文件解析,構建對應的chunk,生成對應的哈希值。
contenthash:在打包時,我們會在js文件中導入CSS文件,因為他們是同一個入口文件,我們只改了JS代碼,但是它的CSS在抽離生成CSS文件時hash也會跟著變,這個時候就需要contenthash來解決。
配置webpack
創建一個空文件夾,并且在當前文件夾打開bash or cmd。npm init -y生成?package.json?。使用npm執行npm i webpack webpack-cli -D,安裝webpack包。創建src,在src內部創建chunk0.js、chunk1.js、common.js、index.jsstyle.js并且編寫內部代碼 。在項目根目錄創建?webpack.config.js?。在cmd中運行npx webpack。延伸閱讀:
二、HashMap是什么
簡單來說,HashMap由數組+鏈表組成的,數組是HashMap的主體,鏈表則是主要為了解決哈希沖突而存在的,如果定位到的數組位置不含鏈表(當前entry的next指向null),那么對于查找,添加等操作很快,僅需一次尋址即可;如果定位到的數組包含鏈表,對于添加操作,其時間復雜度依然為O(1),因為最新的Entry會插入鏈表頭部,僅需簡單改變引用鏈即可,而對于查找操作來講,此時就需要遍歷鏈表,然后通過key對象的equals方法逐一比對查找。所以,性能考慮,HashMap中的鏈表出現越少,性能才會越好。
hash函數(對key的hashcode進一步進行計算以及二進制位的調整等來保證最終獲取的存儲位置盡量分布均勻)