在Vue中,當我們使用vue-cli或webpack等構(gòu)建工具進行打包構(gòu)建時,經(jīng)常會遇到路徑的問題。通常情況下,在開發(fā)模式下,我們可以直接使用相對路徑或絕對路徑引入靜態(tài)資源,如下:
<img src="../assets/logo.png" /> 或 <img src="/static/img/logo.png" />
然而,在構(gòu)建后,所有的資源都會被打包成一個或多個js或css文件,并且放置到指定的目錄中。這時候,我們再使用相對路徑或絕對路徑進行資源引用就會出現(xiàn)問題,因為路徑已經(jīng)改變了。
為了解決這個問題,Vue提供了一些特殊的變量和配置項來處理路徑問題。
publicPath
publicPath是webpack中的一個配置項,通常用于指定靜態(tài)資源的根路徑。當我們打包構(gòu)建后,所有的靜態(tài)資源都會被放置在publicPath指定的目錄中,從而可以通過該目錄訪問到這些資源。
例如,我們配置publicPath為"/assets/"時,構(gòu)建后我們可以這樣引入靜態(tài)資源:
<img src="/assets/logo.png" />
具體配置方式如下:
// vue.config.js module.exports = { publicPath: '/assets/' }
process.env.BASE_URL
在Vue CLI中預(yù)設(shè)了process.env.BASE_URL這個變量,它的值為當前應(yīng)用所在的基礎(chǔ)路徑。我們可以通過這個變量拼接路徑,從而訪問到靜態(tài)資源。
例如,我們可以這樣引入靜態(tài)資源:
<img :src="`${process.env.BASE_URL}logo.png`" />
在構(gòu)建項目時,Vue CLI會將process.env.BASE_URL自動設(shè)置為當前應(yīng)用所在的基礎(chǔ)路徑,無需手動配置。
別名
在Vue CLI中,我們可以通過使用alias來為指定的路徑設(shè)置別名,從而簡化路徑的寫法。這對于一些常用的路徑,如src和public等,非常實用。
例如,我們可以這樣設(shè)置別名:
// vue.config.js const path = require('path') module.exports = { chainWebpack: config =>{ config.resolve.alias .set('@', path.join(__dirname, 'src')) .set('~', path.join(__dirname, 'public')) } }
這樣,我們在代碼中可以這樣使用別名:
import '@/components/HelloWorld.vue' <img src="~img/logo.png" />
總結(jié)
以上是Vue中處理路徑的一些方式。當然,除了使用這些方法外,我們也可以手動設(shè)置路徑。在實際開發(fā)中,應(yīng)根據(jù)具體情況選擇合適的方式進行路徑設(shè)置。