在Vue打包編譯過程中,我們可能會遇到“chunkhash”和“contenthash”,它們是什么意思呢?為什么需要使用它們?在此篇文章中,我們將會介紹Vue編譯中的hash策略。
首先,我們需要知道hash在打包編譯中的作用。當我們發(fā)布代碼時,為避免讓用戶訪問到舊的緩存文件,我們通常會給文件名添加一個hash值以避免緩存,因為瀏覽器只會根據(jù)文件名去緩存,而不會去判斷文件內(nèi)容是否有變化。那么使用哪種hash值會更佳呢?
// 使用chunkhash output: { filename: 'js/[name].[chunkhash:8].js', }
對于單頁應用,我們可以使用Vue CLI自帶的“chunkhash”。這是由JavaScript文件本身的內(nèi)容所生成的hash值。如果文件內(nèi)容變化,它生成的hash值也會變化。這種情況下,假設你的應用有兩個頁面,即page1和page2,當你只改動了page1上的代碼時,只有page1的hash值發(fā)生改變,而page2的hash值不受影響。這樣,只有修改的代碼經(jīng)過新的打包編譯,不會影響到舊的代碼。
// 使用contenthash output: { filename: 'js/[name].[contenthash:8].js', }
對于多頁應用或組件庫而言,我們可以考慮使用“contenthash”。這是與文件內(nèi)容相關的hash值,如果文件內(nèi)容有任何改動,則生成的hash值也會發(fā)生改變。這時候,如果你的組件庫中的某個組件發(fā)生改動,它所依賴的組件也會重新打包編譯,生成新的hash值,以此來保證組件庫的版本更新。
綜上所述,chunkhash和contenthash都有各自的應用場景,我們需要根據(jù)實際情況,來選擇適合自己的hash策略。