vue2中在路由配置中添加mode(vue-cli建立的項目在src/router/index.js)javascript
1 export default new Router({ 2 mode: 'history', 3 routes: [ 4 { 5 path: '/', 6 name: 'menu', 7 component: menu, 8 children: [ 9 { 10 path: 'organization', 11 component: organization, 12 children: [ 13 { 14 path: '', 15 redirect: 'organizationSub' 16 }, 17 { 18 path: 'organizationSub', 19 component: organizationSub 20 } 21 ] 22 }, 23 { 24 path: 'user', 25 component: user 26 }, 27 { 28 path: 'role', 29 component: role 30 } 31 ] 32 } 33 ] 34 })
vue開發的單頁面應用,html只有一個,切換時url的變化經過url的hash模式模擬完整的url。html
利用history.pushState API完成url的跳轉vue
HTML5 History 模式官網介紹:https://router.vuejs.org/zh-cn/essentials/history-mode.htmljava
3、注意事項web
不過這種模式要玩好,還須要後臺配置支持。由於咱們的應用是個單頁客戶端應用,若是後臺沒有正確的配置,當用戶在瀏覽器直接訪問
http://oursite.com/user/id
就會返回 404,這就很差看了。vue-router因此呢,你要在服務端增長一個覆蓋全部狀況的候選資源:若是 URL 匹配不到任何靜態資源,則應該返回同一個
index.html
頁面,這個頁面就是你 app 依賴的頁面。vue-cli——vue-router官網瀏覽器
vue-router官網中有介紹,也有後臺配置樣例:https://router.vuejs.org/zh-cn/essentials/history-mode.htmltomcat
確保在config->index.js中,build下assetsPublicPath配置爲絕對路徑,以下:app
1 build: {assetsPublicPath: '/' }
在tomcat->conf->web.xml中添加以下配置:
<error-page> <error-code>404</error-code> <location>/index.html</location> </error-page>
在項目中親測。
4、兼容性
通過測試,mode: 'history'在ie9下不生效,若vue項目須要兼容ie9,且後臺對訪問地址有嚴格校驗,不建議使用此種模式。如果內容有錯誤或遺漏,歡迎你們批評指正~