實戰專案編譯後不在根目錄怎麼辦
這次帶給大家實戰專案編譯後不在根目錄怎麼辦,實戰專案編譯後不在根目錄怎麼辦的注意事項有哪些,下面就是實戰案例,一起來看一下。
eg. :
vue-router: history模式內網環境:192.168.1.1:8080/index.html 外網環境:domain.com/ttsd/index.html
由於開發出來的專案是要部署在客戶方,且客戶並不想單獨拿一個網域名稱(或子網域)來部署,這時,打包後的程式就要作一些配置方面的修改了。
修改設定檔
1、把打包後的資源參考修改成相對路徑找到config/index.js
# # 中build
屬性下的assetsPublicPath
build: { ... assetsPublicPath: './' // 未修改前的配置为 '/', }
2、修改樣式引用的資源檔案(圖片、視頻、字型檔等)為相對路徑找到build/utils.js
中,新增(或修改) publicPath
為'../../'
if (options.extract) { return ExtractTextPlugin.extract({ use: loaders, fallback: 'vue-style-loader', publicPath: '../../' // 修改路径 }) } else { return ['vue-style-loader'].concat(loaders) }
修改路由
在路由的history模式下,所有的路由都是基於根路徑的,如/xxxx
,由於部署目錄未知,所以我們可以根據location.pathname
來取得到目前存取的檔案路徑,來修改路由。
vue-router裡提供了一個base的屬性
base類型: string
預設值: "/"
應用的基底路徑。例如,如果整個單頁應用程式服務在 /app/
下,然後 base
就應該設為 "/app/"
。
修改路由代碼
function getAbsolutePath () { let path = location.pathname return path.substring(0, path.lastIndexOf('/') + 1) } const routers = new Router({ mode: 'history', base: getAbsolutePath(), ... })
至此,打包設定的相關修改已全部完成,專案也能夠正常存取。但還是會有一個問題,跳到某個路由後,重新整理頁面,就gg了,頁面為空白,此時就要修改nginx的設定了。
修改nginx的設定
官方給的nginx設定是根目錄下的,即https://router.vuejs.org/ zh-cn/essentials/history-mode.html#nginx
location / { try_files $uri $uri/ /index.html; // 需要修改为 try_files $uri $uri/ /dist/index.html; }
註:/dist
根據實際部署的網站目錄,修改一下就可以。個人感覺還可以透過nginx內建的指令去動態獲取,在下就不太清楚了。
相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
推薦閱讀:
以上是實戰專案編譯後不在根目錄怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

在使用C++進行程式設計時,經常會遇到未宣告的識別碼這個問題。這種情況通常發生在使用了未定義的變數、函數或類別時,導致編譯器無法識別這些標識符,進而產生編譯錯誤。本文將介紹導致未聲明的標識符問題的常見原因以及如何解決這個問題。常見原因未宣告的標識符問題通常由以下幾種原因導致:變數、函數或類別未被正確聲明:在使用變數、函數或類別之前,應該先聲明它們。如果變數未被宣告或函

無論是文章、論文或教程,任何文件的主要亮點都是標題,當然還有目錄。它描述了文件的大綱結構,以便使用者可以到達他們期待從文件中讀取的位置和內容。將目錄添加到大多數文件中以使它們看起來更專業也是一種最佳實踐。如今,一切都在網路上進行,人們使用Google文件來建立大多數文件。許多使用者仍然不確定如何在 google 文件中插入或新增目錄。因此,我們提出了這篇文章來解釋如何在Google文件中建立或插入目錄。如何在 Google Docs 插入目錄第 1 步:點擊此處前往 Google Docs 線上版。第 2 步:如

使用java的File.isDirectory()函數判斷檔案是否存在且為目錄類型在Java程式設計中,常常會遇到需要判斷一個檔案是否存在且為目錄類型的情況。 Java提供了File類別來操作檔案和目錄,其中的isDirectory()函數可以幫助我們判斷一個檔案是否是目錄類型。 File.isDirectory()函數是File類別中的一個方法,其作用是判斷目前Fil

Java是一種非常流行的程式語言,廣泛應用於開發各種類型的軟體。在Java開發中,編譯和反編譯技術是非常重要的環節。編譯技術用於將Java程式碼轉換成可執行文件,而反編譯技術則允許人們將可執行檔重新轉換回Java程式碼。本文將介紹Java中的編譯和反編譯技術。一、編譯技術編譯是將高階語言(如Java)程式碼轉換為機器語言的過程。在Java

近年來,Go語言已經成為了越來越多開發者的選擇。但是,相較於其他程式語言而言,Go語言的編譯速度卻不夠快。很多開發者在編譯Go程式時都會遇到這樣的問題:為什麼我的Go程式需要更長時間來編譯?本文將會從幾個面向探討這個問題。 Go語言的編譯器架構Go語言的編譯器架構採用的是三階段設計,分別是前端、中間層、後端。前端負責將原始碼翻譯成Go語言的中間程式碼,中間層則會中

C++編譯錯誤:函式參數列表太長,該怎麼解決?在使用C++編寫程式時,有時會遇到這樣的編譯錯誤:函數參數清單太長。對於C++初學者來說,這可能是個很頭痛的問題。接下來,我們將介紹這個問題的原因和解決方法。首先,讓我們來看看C++函數參數的基本規定。在C++中,函式參數必須在函式名稱和左括號之間宣告。當你傳遞函數參數時,告訴函數要做什麼。這些參數可以是任

PHP函數介紹—rename():重新命名檔案或目錄介紹:在PHP中,rename()函數用來重新命名檔案或目錄。它提供了一種簡單的方法來更改檔案或目錄的名稱。無論是單一檔案還是整個目錄,都可以使用這個函數進行重新命名操作。透過指定來源檔案或目錄的名稱以及目標名稱,可以輕鬆完成重新命名過程。語法:boolrename(string$source,str

PHP中的glob()函數用來尋找檔案或目錄,是一種強大的檔案操作函數。它可以根據指定的模式匹配,返回檔案或目錄的路徑。 glob()函數的語法如下:glob(pattern,flags)其中,pattern表示要匹配的模式字串,可以是一個通配符表達式,如*.txt(匹配以.txt結尾的文件),或者是具體的文件路徑。 flags是一個可選參數,用來控制函數
