vue-router
有兩種模式,預設是hash
模式,另外一種是history
模式。
hash 和 history 兩種模式都是基於瀏覽器自身的屬性,vue-router
只是利用了這兩個特性(底層還是瀏覽器提供的介面)來實現前端路由。
一般來說,兩種模式都是可以的。除非在意不太漂亮的#
,只能選擇 history。
這兩種模式在開發環境下都沒有什麼太大的問題,但是當部署到生產環境中後,兩者有所不同。
hash 模式部署沒有什麼問題,只要訪問到伺服器上的 index.html,就可以訪問**了。
history 模式下,前端的 url 必須和實際向後端發起請求的 url 一致,如。如果後端缺少對
/user/id
的路由處理,將返回 404 錯誤。
vue、react等單頁面專案應該這樣子部署到伺服器
因此,現把解決的思路總結下,雖然 官網 上給出了解決方案,但在實際的編碼中也遇到了一些問題。
當專案在根目錄下部署的時候(如),
vue
的相關檔案預設不需要修改,修改的是後端,這裡以 nginx 為例。
```location /
```$uri
就是訪問的 url,不包含網域名稱
和querystring
。例如/test/hello
當訪問$uri
時,如果存在,則訪問$uri/
, 不存在就訪問/index.html
這樣配置好,訪問時就可以訪問到**了,進入多級目錄後重新整理頁面也不會存在問題。
這裡涉及到修改vue
專案幾個配置檔案。
先定義幾個環境
1. 打包後的靜態資源路徑需要修改
找到build/config/index.js
,**如下:
...
build:
2. 路由檔案
vue-router
有乙個base
屬性, 傳送門
base
型別: string
預設值: "/"
因此,找到src/router/index.js
,**如下:
// 不影響本地開發,相容性做了處理
const ishistorymode = process.env.node_env === 'production' ? : ;
const router = new router();
至此,打包配置的相關修改已全部完成,專案也能夠正常訪問。
但還是會有乙個問題,跳轉到某個路由後,重新整理頁面,就會出現頁面空白,或者路由不通,此時就要修改 nginx 的配置了。
3. nginx 配置相關修改
nginx部署路徑/conf/nginx.conf
,修改如下:
#h5-year-bill
location ^~ /h5-year-bill
/h5-year-bill/
就是部署的**目錄。
這樣幾項配置後,就可以在子目錄下訪問**,重新整理也沒有問題。
Vue 專案部署遇到的問題
使用 vue cli 生成的專案模板,執行時在url位址列多乙個 號,伺服器部署後會出現 www.com 的情況.解決方案 修改src router index.js檔案,vue router 預設 hash 模式 我們可以修改 vue router 模式為history,設定baseurl效果正常...
linux 專案部署遇到的問題
1 mysql 大小寫敏感 專案執行中去掉大小寫敏感 1 service mysql stop 2 修改my.cnf配置檔案 etc mysql my.cnf 注意修改許可權,chmod 777 my.cnf 在 mysqld 節下加入 讓mysql大小寫不敏感 lower case table n...
vue專案部署
1 更改專案下config資料夾index.js檔案 標紅處兩個位置 build 2 打包檔案,npm run build 之後會生成乙個dist資料夾,即為打包好的檔案,將檔案放在磁碟中,配置nginx監聽80埠,並指定服務名稱server name,最終可用kangqiao.kangqiao.c...