vue-cli npm run build空白頁的兩個坑 webpack gzip檔案壓縮優化打包檔案

OBKoro1發表於2017-10-10

寫在前面:

npm run build 是vue-cli用來打包專案的命令列,本文是關於vue-cli打包的一些常見的坑,會盡量詳細的寫每個步驟,大家可以一邊看著文章,一邊打包試試。有需要的朋友可以做一下參考,喜歡的可以點波贊,或者關注一下,希望可以幫到大家。

初始化一個專案:

這裡初始化一個專案,因為導致打包錯誤的原因多種多樣,避免因為其他設定錯誤干擾,從頭開始打包整體步驟也會更加清晰

命令列:

vue init webpack build1(專案名)
//吧啦吧啦進行一波設定
//進入專案資料夾
npm install複製程式碼

如果還不清楚如何初始化執行一個專案,可以參考我之前寫的一篇文章:傳送門

開始打包踩坑

命令列:

//直接打包
npm run build複製程式碼

打包出來的檔案

vue-cli專案檔案打包位置
vue-cli專案檔案打包位置

第一個坑:檔案引用路徑

現在專案我們什麼都沒動,是初始化之後直接打包的狀態,開啟dist/index.htmnl檔案整個網頁都是一片空白的。

開啟除錯,發現有一排報錯說是:不能載入到資源,後面就發現路徑的問題,仔細看上面再看上面載入的css的引用路徑,這裡是有問題的。

爬坑:

檔案位置:config資料夾/index.js檔案

1.更改assetsPublicPath屬性:

檔案裡面有兩個assetsPublicPath屬性,更改第一個,也就是更改build裡面的assetsPublicPath屬性:

assetsPublicPath:'/'//false
assetsPublicPath:'./'//true複製程式碼

assetsPublicPath屬性作用是指定編譯釋出的根目錄,'/'指的是專案的根目錄 ,'./'指的是當前目錄。

2.改好設定之後,重新打包。

開啟打包檔案:

重新開啟index.html
重新開啟index.html

錯誤原因:

dist資料夾
dist資料夾

打包出來所有的檔案都會放在dist的static資料夾下面,index.html要載入檔案,那麼問題來了,'/'指的是專案的根目錄 ,'./'指的是當前目錄。要選哪個?當然選擇原諒她了。

第二個坑:路由history模式。

這個坑是當你使用了路由之後,在沒有後端配合的情況下就手賤開啟路由history模式的時候,打包出來的檔案也會是一片空白的情況,很多人踩這個坑的時候花了很多時間,網上的教程基本上都是說的第一個坑,這個坑很少有人提起。

圖片出自vue-router文件
圖片出自vue-router文件

打包之前的樣子:

這裡我弄了個示例,因為是剛建立的專案沒有其他因素干擾,當你開啟路由的history模式之後,開發的時候一切正常

打包之前的路由
打包之前的路由

打包之後的樣子:

打包之後路徑也是對的,但是頁面一片空白
打包之後路徑也是對的,但是頁面一片空白

解決方式:

// mode: 'history',//將這個模式關閉就好複製程式碼

這裡並不是說不能開啟這個模式,這個模式需要後端設定的配合,詳情可以看:路由文件


Gzip 檔案壓縮

順帶分享一個很6的優化打包的方法,用起來也簡單的很,只要下載一個外掛,然後開啟一個設定就好了。

設定方法:

這裡其實是webpack自帶的一個優化打包的方法,開啟這個配置後如果沒有下載那個外掛,會提示你下載,下載就好了。

然後在打包的時候,每個js和css檔案會壓縮一個gz字尾的資料夾,瀏覽器如果支援g-zip 會自動查詢有沒有gz檔案 找到了就載入gz然後本地解壓 執行。

開啟這個配置會之後對整體的打包體積也就是dist資料夾並沒有太大的變化。下圖來看看他的壓縮率以及對載入的提升,可以說是非常大且明顯的,大家可以自己試一下就知道多好用了。

後話

之前自己打包的時候連著踩了不少坑,可能是互相關聯的,有時候你並不是錯了一個地方,要想想自己其他地方是不是也是錯的。上述的內容,算是自己踩坑的一些經驗,希望可以幫到大家。

最後:如需轉載,請放上原文連結並署名。碼字不易,感謝支援!本人寫文章本著交流記錄的心態,寫的不好之處,不撕逼,但是歡迎指點。然後就是希望看完的朋友點個喜歡,也可以關注一下我。
掘金個人主頁

以上2017.10.10

相關文章