路由器分別有兩種模式:一種是hash
模式、另一種是history
模式,在使用vue -cli
以及vue-router
預設搭建的vue
項目,如果不做特殊的配置,預設就是hash
模式
這兩種模式各有自己的優勢,但他們的使用區別,卻多多少少都會在面試當中被問到
#今天就一起來學習下
哈希模式(hash )
vue-router
預設hash
模式,使用url
的雜湊(hash
)來模擬一個完整的URL
,當URL
改變時,頁面不會重新載入。 【相關推薦:vuejs影片教學、web前端開發】
#如下
http://localhost/#home
特點: #號後面的參數不會傳送給伺服器,相容性好,不會作為路徑的一部分發送給伺服器,也就是它不會包括在
HTTP
請求體中,對後端完全沒有影響,只是我們前端同學自己玩
頁面刷新時,會停留在當前頁面,不會重新加載
如果覺得hash
路徑很醜,不簡潔,我們可以用路由的history
模式,這種模式充分利用history.pushState API
或replaceState
,來完成,url
#跳轉而無需重新載入頁面
歷史模式
history
模式:在實例化設定物件中新增mode
模式,值為history
就可以了的
經過改造後,hash
模式就會變成history
模式
const router = new VueRouter({ mode: 'history', routes: [...] })
這兩種方式的使用都是沒啥問題的,如果你在意瀏覽器url
的顏值,#符號摻雜在
url
裡看起來確實有些不優雅
如果你想url
更好看,那麼就使用history
模式
但是:在hash
模式下,使用hash
符號之前的內容會被包含在請求體中,#號後面的不會發送給伺服器
而history
模式下,前端的URL
必須和實際向後端發起請求的URL
保持一致
如:https://itclan.cn/fontend/id
,如果後端缺少沒有對/fontend /id
的路由處理,那麼它將返回404
錯誤
如果你想要支援history
模式,那麼需要後端同學支援,想要徹底解決404的問題,需要與後端同學協商,因為需要後端與前端路由做匹配
在服務端增加一個覆蓋所有情況的時候的候選資源,如果url
符合不到任何靜態資源,應該回傳一個首頁頁面
如果出現404,容易讓使用者覺得這是一個Bug
如何解決前台刷新頁面404問題
解決這個問題:如果你用的是Node
做後端服務,那麼在Node
後台中可以加入一個中間件例如:connect-history -api-fallback
即可解決這種404問題
如果是java
或php
,找後端同學,讓後端路由與前端路由做匹配,或是用Ngnix
做中間代理
如下這段簡易的Node
服務程式碼,可以命名為server.js
,同時安裝express
以及connect-history-api-fallback
中間件
啟動後端服務執行指令node server.js
const express = require('express'); const history = require('connect-history-api-fallback') const app = express() app.use(history()) app.use(express.static(__dirname+'/static')); app.listen(5005,(err)=> { if(!err)consle.log('服务器启动成功了') })
把前端打包產生的dist
檔案內的程式碼,放到static
中,透過這一操作,即可解決刷新頁面,404
的問題
對單頁spa的應用理解
我們的前端使用的vue-router
中的兩種模式,就是單頁應用,整個應用只有一個router
路由器,是可以透過$router
屬性取得到
也就是說,整個應用程式只有一個完整的頁面,同時,點擊頁面中的導航連結,不會刷新頁面,只會是頁面的局部更新
而我們頁面中的資料,往往需要透過ajax
請求來取得
現在開發的新專案,都是前後端分離,基本上都是單頁應用
總結
前端路由,有兩種模式,一種是hash
模式,另一種是history
模式,其中hash
模式是預設模式,#後面的不會傳送給服務端,不會重新刷新載入頁面,而
history
模式,url
雖然比較好看,但是想要完整支援,需要後端同學提供支援,後端路由與前端的路由需要做匹配
否則部署到線上,一刷新頁面,會出現404
的問題
以上是聊聊vue的兩種路由模式(哈希和歷史)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Vue.js是前端框架,後端框架用於處理服務器端邏輯。 1)Vue.js專注於構建用戶界面,通過組件化和響應式數據綁定簡化開發。 2)後端框架如Express、Django處理HTTP請求、數據庫操作和業務邏輯,運行在服務器上。

Vue.js與前端技術棧緊密集成,提升開發效率和用戶體驗。 1)構建工具:與Webpack、Rollup集成,實現模塊化開發。 2)狀態管理:與Vuex集成,管理複雜應用狀態。 3)路由:與VueRouter集成,實現單頁面應用路由。 4)CSS預處理器:支持Sass、Less,提升樣式開發效率。

Netflix選擇React來構建其用戶界面,因為React的組件化設計和虛擬DOM機制能夠高效處理複雜界面和頻繁更新。 1)組件化設計讓Netflix將界面分解成可管理的小組件,提高了開發效率和代碼可維護性。 2)虛擬DOM機制通過最小化DOM操作,確保了Netflix用戶界面的流暢性和高性能。

Vue.js被開發者喜愛因為它易於上手且功能強大。 1)其響應式數據綁定係統自動更新視圖。 2)組件系統提高了代碼的可重用性和可維護性。 3)計算屬性和偵聽器增強了代碼的可讀性和性能。 4)使用VueDevtools和檢查控制台錯誤是常見的調試技巧。 5)性能優化包括使用key屬性、計算屬性和keep-alive組件。 6)最佳實踐包括清晰的組件命名、使用單文件組件和合理使用生命週期鉤子。

Vue.js是一個漸進式的JavaScript框架,適用於構建高效、可維護的前端應用。其關鍵特性包括:1.響應式數據綁定,2.組件化開發,3.虛擬DOM。通過這些特性,Vue.js簡化了開發過程,提高了應用性能和可維護性,使其在現代Web開發中備受歡迎。

Vue.js和React各有優劣,選擇取決於項目需求和團隊情況。 1)Vue.js適合小型項目和初學者,因其簡潔和易上手;2)React適用於大型項目和復雜UI,因其豐富的生態系統和組件化設計。

Vue.js通過多種功能提升用戶體驗:1.響應式系統實現數據即時反饋;2.組件化開發提高代碼復用性;3.VueRouter提供平滑導航;4.動態數據綁定和過渡動畫增強交互效果;5.錯誤處理機制確保用戶反饋;6.性能優化和最佳實踐提升應用性能。

Vue.js在Web開發中的角色是作為一個漸進式JavaScript框架,簡化開發過程並提高效率。 1)它通過響應式數據綁定和組件化開發,使開發者能專注於業務邏輯。 2)Vue.js的工作原理依賴於響應式系統和虛擬DOM,優化性能。 3)實際項目中,使用Vuex管理全局狀態和優化數據響應性是常見實踐。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

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

SublimeText3 Linux新版
SublimeText3 Linux最新版

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。