Vue路由模式


vue-router中默認的路由模式是hash模式,即:#/路由地址

當啟用history路由模式,就不會看到#,只剩:/路由地址 

由此可能出現問題:客戶端和服務端都有路由地址,並且有可能重名。如服務端:/index(服務器端查詢)  VUE中:/index(Vue腳手架路由器查詢)且,瀏覽器只要看到不帶#的地址,都會發送給服務器端

解決方法:在服務器端配置重定向,發現來源的域名地址不是服務器端域名地址,只是相對路徑相同,則重新返回給瀏覽器,請瀏覽器解析。

步驟:

  ①Vue腳手架中:router/index.js中:

    new VueRouter({
      mode:"history",
      routes
    })

 

  ② 如果服務器端是nodejs:需要安裝一個專門支持history重定向的中間件

    npm i -save connect-history-api-fallback

    在app.js中,先引入history(require("connect-history-api-fallback")),再創建服務器(var app=express()),app.use(history())

雖然改成了history模式,但是帶#/和不帶#方式其實都能用

 

可是設置了history模式后會出現一個新的問題:重定向后,刷新頁面,有可能會導致樣式和圖片路徑都找不到

此時可以:

  (1)所有圖片和可直接使用的第三方的js和css文件,放public;

  (2)在index.html中,引入public下的第三方js和css和img文件時,以/開頭,不能用相對路徑

    (3)服務端請求來的src屬性的地址,如果不帶/開頭,需要先通過遍歷或者字符串拼接的方式,把src屬性前面拼上"/xxx"讓路勁完整


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM