一篇學會Vue Router 4 的變化及炫酷特性
Vue Router 4 已經發布了,我們來看看新版本中有哪些很酷的特性。
Vue3 支持
Vue 3 引入了createApp API,該API更改了將插件添加到Vue實例的方式。因此,以前版本的Vue Router將與Vue3不兼容。
Vue Router 4 引入了createRouter API,該API創建了一個可以在Vue3中安裝 router 實例。
- // src/router/index.js
- import { createRouter } from "vue-router";
- export default createRouter({
- routes: [...],
- });
- // src/main.js
- import { createApp } from "vue";
- import router from "./router";
- const app = createApp({});
- app.use(router);
- app.mount("#app");
History 選項
在 Vue Router的早期版本中,我們可以mode 屬性來指定路由的模式。
hash 模式使用URL哈希來模擬完整的URL,以便在URL更改時不會重新加載頁面。history 模式利用 HTML5 History API 來實現URL導航,也是無需重新加載頁面。
- // Vue Router 3
- const router = new VueRouter({
- mode: "history",
- routes: [...]
- });
在Vue Router 4中,這些模式已被抽象到模塊中,可以將其導入并分配給新的history 選項。這種額外的靈活性讓我們可以根據需要自定義路由器。
- // Vue Router 4
- import { createRouter, createWebHistory } from "vue-router";
- export default createRouter({
- history: createWebHistory(),
- routes: [],
- });
動態路由
Vue Router 4 提供了addRoute方法實現動態路由。
這個方法平時比較少用到,但是確實有一些有趣的用例。例如,假設我們要為文件系統應用程序創建UI,并且要動態添加路徑。我們可以按照以下方式進行操作:
- methods: {
- uploadComplete (id) {
- router.addRoute({
- path: `/uploads/${id}`,
- name: `upload-${id}`,
- component: FileInfo
- });
- }
- }
我們還可以使用以下相關方法:
- removeRoute
- hasRoute
- getRoutes
導航守衛可以返回值并非next
導航守衛是Vue Router的鉤子,允許用戶在跳轉之前或之后運行自定義邏輯,例如 beforeEach,beforeRouterEnter等。
它們通常用于檢查用戶是否有權訪問某個頁面,驗證動態路由參數或銷毀偵聽器。
在版本4中,我們可以從hook 方法中中返回值或Promise。這樣可以方便快捷地進行如下操作:
- // Vue Router 3
- router.beforeEach((to, from, next) => {
- if (!isAuthenticated) {
- next(false);
- }
- else {
- next();
- }
- })
- // Vue Router 4
- router.beforeEach(() => isAuthenticated);
這些只是版本4中添加的一些新特性,大家可以到官網去了解一下更多的信息。
~完,我是前端小智,去保建了,我們下期見~
作者:Matt Maribojoc 譯者:前端小智 來源:stackabuse
原文:https://vuejsdevelopers.com/topics/vue-router/
本文轉載自微信公眾號「大遷世界」,可以通過以下二維碼關注。轉載本文請聯系大遷世界公眾號。