公司項目頁面是jsp,前端開發用的是webpack + vue全家桶。項目部署時會動態配置一個相對路徑css
eg. <script src="<%=request.getContextPath()%>/vue-static/build-dist/manifest.js"></script>
前端
webpack輸出配置vue
output: {
// 文件輸出目錄
path: resolve('./build-dist'),
// 資源加載路徑
publicPath: '/vue-static/build-dist/',
......
}
複製代碼
jsp頁面中引入的 js、css、img 均可以經過這種方式引入,可是 publicPath 配置項是寫死的,webapck編譯後的js,css引入的字體、圖片在引入時會缺乏相對路徑致使404錯誤。webpack
查看webpack文檔,發現一神器__webpack_public_path__。用一句話來解釋的話,這貨就是output配置中的「publicPath」參數另一種配置方式。
ios
<script>
// 全局用到的信息
var INFO_G = {
// 上下文路徑
contextPath: '<%=request.getContextPath()%>',
// 企業id
entId: '${entId}',
// 用戶id
userId: '${userId}'
};
</script>
複製代碼
output: {
// 文件輸出目錄
path: resolve('./build-dist'),
// 資源加載路徑
publicPath: '',
......
}
複製代碼
__webpack_public_path__ = INFO_G.contextPath + '/vue-static/dist/';
複製代碼
import './config'
import Vue from 'vue'
import App from './app.vue'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-default/index.css'
import router from './router'
import axios from 'axios'
複製代碼
參考文檔:webpackweb