国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Vue項目部署在Spring Boot出現頁面空白問題的解決方案

2024-05-06 15:27:43
字體:
來源:轉載
供稿:網友

網上流行的解決方案是將assetsPublicPath: '/'改成'./',下面說一下這個解決方案的弊端:

通常頁面空白的問題出現大多數是由于Spring Boot端配置了server.servlet.context-path,上下文改變了css, js等文件的訪問路徑,文件無法加載導致index.html顯示空白。'/'改成'./'是將絕對路徑變為相對路徑,可以動態適應Spring Boot端上下文的改變,這是為什么這個解決方案起作用的原因。

Vue項目部署在Spring Boot出現的另一個常見問題是當刷新瀏覽器的時候出現white label, 也就是404錯誤,解決的方案基本是把error page配置成為Vue的index.html。

這兩個解決方案有沖突的地方,當router出現子路徑的時候刷新瀏覽器,error page會指向Vue的index.html頁面,此時頁面中訪問css,js文件的路徑是相對路徑,也就是上下文路徑+router子路徑,這將導致css,js再次無法正常加載,這就是相對路徑的弊端。

由于router會出現子路徑,因此必須保證assetsPublicPath為絕對路徑,下面講一下保持絕對路徑的解決方案:

1 假設Spring Boot端配置server.servlet.context-path: api, 對應Vue的/config/index.js中assetsPublicPath: '/'改成 '/api/'

2 router/index.js中配置base: '/api/', 這是保證瀏覽器刷新時上下文參數和router跳轉路徑一致。

3 對于Ajax請求需要配置baseURL, 如果使用Axios, 可以采用如下方法在main.js中配置

// http request 攔截器Axios.interceptors.request.use(config => {if (localStorage.getItem('id_token')) {config.headers.Authorization = localStorage.getItem('id_token')}config.baseURL = '/api'return config},err => {return Promise.reject(err)})

4 另外需要注意的一點,按照Spring Boot默認配置, 在Vue端/config/index.js中assetsSubDirectory: 'static'要改變為其它字符,比如:'content', 'vue', 'api'等等。

5 試過將assetsSubDirectory配置為空,它和另一個css圖片加載的方案有沖突,圖片加載解決方案是在/build/util.js中加一行配置

// Extract CSS when that option is specified// (which is the case during production build)if (options.extract) {return ExtractTextPlugin.extract({use: loaders,fallback: 'vue-style-loader',publicPath: '../../'})

結尾附上Spring Boot端將error page指向Vue的index.html代碼:

import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.web.server.ConfigurableWebServerFactory; import org.springframework.boot.web.server.ErrorPage; import org.springframework.boot.web.server.WebServerFactoryCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpStatus; @Configuration public class ServletConfig {   private static final Logger logger = LoggerFactory.getLogger(ServletConfig.class);   @Bean   public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer() {     logger.info("come to 404 error page");     return factory -> {       ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/index.html");       factory.addErrorPages(error404Page);     };  } }            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 徐汇区| 临颍县| 磐石市| 双峰县| 新兴县| 庆云县| 平遥县| 青浦区| 察哈| 朔州市| 蕲春县| 渑池县| 平顺县| 太谷县| 盐边县| 咸丰县| 昌黎县| 弥勒县| 公主岭市| 米脂县| 青阳县| 南和县| 锡林郭勒盟| 芮城县| 新乡市| 阳谷县| 宿州市| 微山县| 永新县| 治县。| 马鞍山市| 耿马| 宝兴县| 乾安县| 南木林县| 肥东县| 蒙自县| 屏南县| 定南县| 嘉禾县| 建德市|