国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

vue-router的HTML5 History 模式設(shè)置

2019-11-19 12:59:15
字體:
供稿:網(wǎng)友

VUE是當(dāng)下最火爆的前端框架之一,vue-router是vue項(xiàng)目中幾乎都會(huì)用到的組件,然而體驗(yàn)一時(shí)爽,其實(shí)坑不少。本篇經(jīng)驗(yàn)將詳細(xì)介紹vue-router的兩種mode效果和開發(fā)測(cè)試環(huán)境下的問題,并給出解決方案。

vue-router的HTML5 History 模式,這種模式充分利用 history.pushState API 來完成 URL 跳轉(zhuǎn)而無須重新加載頁面。

const router = new VueRouter({ mode: 'history', routes: [...]})

當(dāng)你使用 history 模式時(shí),URL 就像正常的 url,例如 http://yoursite.com/user/id, 就是長(zhǎng)這樣的!

不過這種模式要玩好,還需要后臺(tái)配置支持。因?yàn)槲覀兊膽?yīng)用是個(gè)單頁客戶端應(yīng)用,如果后臺(tái)沒有正確的配置,當(dāng)用戶在瀏覽器直接訪問 http://oursite.com/user/id 就會(huì)返回 404,這就尷尬了。

所以,你要在服務(wù)端增加一個(gè)覆蓋所有情況的候選資源:如果 URL 匹配不到任何靜態(tài)資源,則應(yīng)該返回同一個(gè) index.html 頁面,這個(gè)頁面就是你 app 依賴的頁面。

目前后端服務(wù)器有Apache、nginx、原生 Node.js、基于 Node.js 的 Express、Internet Information Services (IIS)、Caddy、Firebase 主機(jī)等。

先給一個(gè)官方標(biāo)準(zhǔn)版配置的傳送門,請(qǐng)戳這里→ https://router.vuejs.org/zh/guide/essentials/history-mode.html

既然是官方給出的配置,那肯定就會(huì)說的很官方咯~

按照官方給出的示例,將道理是成功的,但是官方給出的只局限于這個(gè)項(xiàng)目在服務(wù)器的根目錄下!
如果你的項(xiàng)目沒有放在根目錄下,那么就是這么的不講道理。

下面是在實(shí)際開發(fā)中碰到的問題。

我們的后端服務(wù)器是nginx,所以按照官方的給出的配置,找到nginx.conf,照抄代碼,修改完后重啟服務(wù)器,講道理是成功的。

server{  listen 80;  server_name oursite.com;  location /test/ {          alias /usr/local/test/;    index index.htm index.html;    #上面的就是一些常規(guī)配置,下面這個(gè)才是重點(diǎn)    try_files $uri $uri/ /index.html;    #這里沒有采用官方給出處理404錯(cuò)誤頁面的方案    #方案一(把所有沒有后綴名的請(qǐng)求如果404都跳轉(zhuǎn)到index.html,我們沒有采用)    #error_page 404 /test/index.html;    #方案二(404的方式,不是特別完美。會(huì)有瀏覽器留下404的狀態(tài)(容易被第三方劫持),以下方式可以避免被第三方劫持!)    if (!-e $request_filename) {      rewrite ^/(.*) /test/index.html last;      break;    }  }}

但是,事實(shí)就是這么的不講道理,我們并沒有成功!這就令人很是郁悶了,心中一萬只神獸羊駝,奔騰而過~ 為什么沒有成功呢,都是按部就班做的呀,完全不講道理!

而真相只有一個(gè),那就是~~~

路由文件中的路徑有問題

const router = new VueRouter({ mode: 'history', routes: [  { path: '/test/', component: YourComponent },  { path: '/test/a', component: YourComponent },  { path: '/test/b:x', component: YourComponent } ]})

在路由文件中所有的路徑前面加上服務(wù)器下項(xiàng)目所在的文件名即可,當(dāng)然也包括<router-link>和this.$router.push()中的路徑,不然又是不講道理的。

這只是在nginx服務(wù)器下的一種解決方案,至于別的服務(wù)器應(yīng)該也是同理的。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 罗江县| 南阳市| 南乐县| 白城市| 恩平市| 盐津县| 梁河县| 新闻| 盐城市| 于都县| 松溪县| 丁青县| 司法| 灌云县| 丹寨县| 葵青区| 宁武县| 巍山| 桂阳县| 吉首市| 遵化市| 定边县| 西充县| 安平县| 宜良县| 龙泉市| 龙胜| 丽江市| 兴义市| 西贡区| 旬阳县| 小金县| 贺兰县| 石景山区| 德州市| 阳江市| 永吉县| 布尔津县| 万宁市| 盐城市| 上蔡县|