溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

vue-cli與webpack處理靜態(tài)資源的方法及webpack打包的坑

發(fā)布時間:2020-10-01 10:19:43 來源:腳本之家 閱讀:579 作者:mrr 欄目:web開發(fā)

通過Vue-cli進行webpack打包的坑

Vue-cli為Vue項目搭建的腳手架的確很方便,但打包時容易出現(xiàn)空白頁,或者對應(yīng)的靜態(tài)資源加載不了。  

我是通過將項目/config下的index.js的assetsPublicPath變成'./',變成相對路徑,進行解決。

cd vue demo 
 npm run dev //運行程序 
npm run bulid //webpack打包

處理靜態(tài)資源

你也許會注意到vue-cli與webpack結(jié)合的項目中,我們通常會有兩個靜態(tài)資源的路徑:src/assets和static/,他們兩者的區(qū)別是什么呢?本文主要和大家介紹了vue-cli與webpack結(jié)合如何處理靜態(tài)資源,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望能幫助到大家。

打包的資源

為了回答這個問題,我們首先要明白Webpack是如何處理靜態(tài)資源的。在*.vue組件里,所有的templates和CSS模塊都被vue-html-loader和css-loader解析來查找路徑URL。

舉個例子,在<img src"./logo.png">和背景background: url(./logo.png),”./logo.png”是一個相對路徑,會被Webpack當做一個依賴加載。

但是因為logo.png并不是JavaScript,所以如果被當成一個依賴的花,我們需要通過url-loader和file-loader來解析它。這個模板已經(jīng)為你配置了相應(yīng)的loader,所以你通常不用擔心相對路徑的部署問題。

即使這些資源有可能在構(gòu)建過程中被內(nèi)聯(lián)/拷貝/重命名,他們也是源碼重要組成部分。這就是為什么我們建議單獨在/src文件夾里放置靜態(tài)資源,如同其他的資源文件夾。

事實上,你都不必把他們?nèi)旁?src/assets,你可以根據(jù)模塊/組件來組織利用他們。比如說,你可以把任一組件放到他們自己的目錄,并在該目錄下存放靜態(tài)資源。

資源引入規(guī)則

相對路徑,比如 ./assets/logo.png會被解析成模塊依賴。它們會被一個基于你Webpack輸出配置的自動生成URL替代。

沒有前綴的路徑,比如assets/logo.png,同相對路徑,轉(zhuǎn)義成./assets/logo.png

有~前綴的路徑。 ~被認為是一個模塊請求,同require('some-module/image.png')。根路徑,比如/assets/log.png

在JavaScript得到資源路徑

computed: {
 background () {
 return require('./bgs/' + this.id + '.jpg')
 }
}

這個資源路徑同樣會被file-loader處理然后返回處理后的路徑。而且Webpack會一次性加載該bgs目錄下的所有圖片。

“真實的”靜態(tài)資源

與此相對的,static/中的文件全都不會被Webpack處理。它們將被直接拷貝到目標文件夾,引用這些文件需要使用絕對路徑。

總結(jié)

以上所述是小編給大家介紹的vue-cli與webpack處理靜態(tài)資源的方法及webpack打包的坑,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對億速云網(wǎng)站的支持!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI