1,publicPath
publicPath是部署應(yīng)用包時的基本 URL;默認情況下,Vue CLI 會假設(shè)你的應(yīng)用是被部署在一個域名的根路徑上,例如 https://www.my-app.com/。如果應(yīng)用被部署在一個子路徑上,你就需要用這個選項指定這個子路徑。例如,如果你的應(yīng)用被部署在 https://www.my-app.com/my-app/,則設(shè)置 publicPath 為 /my-app/。
這個值也可以被設(shè)置為空字符串 (‘’) 或是相對路徑 (‘./’),這樣所有的資源都會被鏈接為相對路徑,這樣打出來的包可以被部署在任意路徑;但相對路徑的 publicPath 有一些使用上的限制。在以下情況下,應(yīng)當避免使用相對 publicPath:
- 當使用基于 HTML5 history.pushState 的路由時;
- 當使用 pages 選項構(gòu)建多頁面應(yīng)用時。
2,哪里會用到publicPath
在vue中的項目中一般靜態(tài)文件路徑要使用publicPath 和項目打包部署時都會用到publicPath;
2.1 靜態(tài)文件使用publicPath
如果你的項目里面的靜態(tài)文件都放在public文件中,那么使用的時候要使用publicPath這個變量,防止打包后靜態(tài)文件找不到;
你需要通過絕對路徑來引用它們。因為:任何放置在 public 文件夾的靜態(tài)資源都會被簡單的復(fù)制,而不經(jīng)過 webpack;
下圖是vue-cli官網(wǎng)給出的使用說明:鏈接
注意:這里用到了process.env.BASE_URL;下面會解釋的
2.2 項目打包使用publicPath
如果你想把開發(fā)服務(wù)器架設(shè)在根路徑,你可以使用一個條件式的值:
這里判斷是否是生產(chǎn)環(huán)境 如果是那么前面的部署路徑加上 /app/;如果不是 默認使用根路徑 / ;
生產(chǎn)環(huán)境經(jīng)常配合前端服務(wù)器的中nginx代理使用;
module.exports = {
publicPath: process.env.NODE_ENV === 'production' ? '/app/' : '/'
}
3,publicPath和process.env.BASE_URL
1,如果你在vue.config.js里面設(shè)置了publicPath:
module.exports = {
publicPath: process.env.NODE_ENV === 'production' ? '/video/' : '/',
}
那么process.env.BASE_URL 其實就是 publicPath;不信你可以在組件中console.log(process.env.BASE_URL)打印出來;
BASE_URL會被vue.config.js中 publicPath變量覆蓋。
2,如果沒有在vue.config.js里面設(shè)置publicPath;那么process.env.BASE_URL默認就是根路徑 :/ ;
3,在vue路由的配置項中也會用到process.env.BASE_URL:
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes,
})
mode history 代表路由不再顯示#,會像如下形式:localhost:8080/user/list;
主要是base屬性 代表著是基本的路由請求的路徑:
如:base: ‘/app/’
說明項目部署在app目錄下,那么vue所有的路由前面都會自動加上: /app
原文鏈接: https://blog.csdn.net/qq_43886365/article/details/128372030