Client 跟 Server 要資料然後由 router 分配再讓 controller 告訴 model 需要什麼資料,再把資料跟 view 結合後回傳給 server 再提供給 Client
由前端所模擬的路由所以網址中間會多一個 /#/
會建立一個虛擬的路徑,然後依照路徑上的需求調用要用到的元件
路由表會放在 router/index.js
這隻檔案裡面
這邊就是路由表的設定區域,設定內容會有 path 、 name 、 component 三個部分, path 是設定路徑, name 是頁面名稱(方便動態載入), component 則是 import 頁面檔案的路徑
這邊是基本預設,history 的部分是讓這個 Vue Router 是用一個 Hash 的方式(/#/),下面那個 routes 就是對應上面路由表的內容
最後再 export 這個檔案給 main.js 去 import
index.js
裡面 routes 區域的 path、name、componentApp.vue
這個基礎頁面的檔案當中加入我們所需要加入的 <router-link to="path"></router-link>
以及顯示 頁面/元件 的<router-view></router-view>
巢狀路由就是在原本的路由表的頁面裡面再加入下一層的路由,新增方法跟第一層路由大同小異
完成後一樣在頁面裏面加入<router-link to="page/path"></router-link>
以及<router-view></router-view>
這邊要注意,<router-link to="">
的路徑要寫完整,是包含兩層(/page/子page)的哦
可以在同一個元件裏面插入多個 router-view 然後可以增加 name 屬性
載入路由表的時候會改變一個地方:
這邊 components 裡面的物件屬性名稱會使用 router-view 上面的屬性名稱做對應。
最後再把對應連結 router-link
加上去,完成!
因為產品或相關資料會有超多,把資料一個一個建立到路由表上面根本就是神經病工作,所以可以使用動態路由,運用 axios + router 去判斷要接收的資訊是哪個產品,直接動態建立路由表。
這邊 :id 是一個動態對應要顯示資料的 id 的東西, 約莫就是一個在 router 裡面的 ":"(v-bind) !?
運用 props 直接從路由裡面撈 id
路由表裡面的東西會長成這樣
$route 是可以取得路由的屬性
$router 是可以使用 router 的方法
下面有幾種好像比較常會用到的路由方法:
在網址有錯誤的時候 vue 會直接跳一個全白的頁面然後在 console 裡面顯示錯誤給你看,不過這樣對使用者來講真的有點莫名其妙,所以我們可以用兩種方法來提升使用者的體驗,不會那麼不知所措
這樣就會顯示我們所設定的 404 頁面給使用者知道網址有錯誤哦
這樣網址有錯誤的時候就會直接被導回首頁囉
另外,也可以習慣的將 404 頁面放到路由表的最後一個,這樣會比較知道自己要去哪裡找東西,另外,這樣的思考方式也很像後端開發路由的想法(有一致性,因為後端的路由確實是從上到下比對)
這個會寫在 createRouter 裏面,有幾個不錯用的設定可以參考一下: