首頁常見問題正文

vue-router中常用的hash和history路由模式實現(xiàn)原理是什么?

更新時間:2023-05-30 來源:黑馬程序員 瀏覽量:

IT培訓班

  Vue RouterVue.js官方的路由管理器,它可以幫助開發(fā)者在Vue應用中實現(xiàn)導航和路由功能。Vue Router提供了兩種常用的路由模式:hash模式和history模式。

  1.Hash 模式:

  Hash模式使用URL中的哈希值(即 # 后面的部分)來模擬路由。當URL的哈希值發(fā)生變化時,Vue Router可以根據(jù)哈希值的變化來匹配相應的路由并展示相應的組件。

  實現(xiàn)原理:

  ·在HTML中,我們會將路由鏈接設置為帶有#的URL。例如:

<a href="#/home">Home</a>

  ·在Vue Router初始化時,會監(jiān)聽URL的hashchange事件,當URL的哈希值發(fā)生變化時,Vue Router會根據(jù)新的哈希值匹配對應的路由,并展示相應的組件。

  ·在Vue Router初始化時,還會通過JavaScript動態(tài)創(chuàng)建一個隱藏的iframe元素,并將其src屬性設置為一個固定的URL。這個iframe的作用是在瀏覽器的歷史記錄中保留一個歷史記錄項,以便在用戶點擊后退按鈕時能夠正確地觸發(fā)路由變化。如下:

// main.js
import Vue from 'vue';
import VueRouter from 'vue-router';
import App from './App.vue';

Vue.use(VueRouter);

const routes = [
  { path: '/home', component: Home },
  { path: '/about', component: About }
];

const router = new VueRouter({
  mode: 'hash',
  routes
});

new Vue({
  router,
  render: h => h(App)
}).$mount('#app');

  2.History模式:

  History模式使用HTML5history API來實現(xiàn)路由功能。它利用了瀏覽器的pushState()replaceState()方法來修改URL,而不會引起頁面的刷新。

  實現(xiàn)原理:

  ·在HTML中,我們會使用:

<router-link>

  組件或者編程式導航來觸發(fā)路由的跳轉(zhuǎn)。

  ·在Vue Router初始化時,會通過history.pushState()方法或history.replaceState()方法來修改URL,同時不刷新頁面。這樣就可以實現(xiàn)前端路由的跳轉(zhuǎn)。

  ·在服務端需要進行相應的配置,以確保在使用history模式時,當用戶在瀏覽器中直接訪問某個路由時,能正確地返回對應的頁面。如下:

// main.js
import Vue from 'vue';
import VueRouter from 'vue-router';
import App from './App.vue';

Vue.use(VueRouter);

const routes = [
  { path: '/home', component: Home },
  { path: '/about', component: About }
];

const router = new VueRouter({
  mode: 'history',
  routes
});

new Vue({
  router,
  render: h => h(App)
}).$mount('#app');

  在上面的代碼示例中,routes數(shù)組中定義了路由的配置,其中每個路由對象包含了路徑和對應的組件。然后,通過創(chuàng)建一個VueRouter 實例,并將其傳遞給Vue實例router選項,即可啟用路由功能。

  需要說明的是,以上示例僅展示了Vue Router的基本用法,實際的應用可能還需要更多的配置和組件定義。

分享到:
在線咨詢 我要報名
和我們在線交談!