當前位置:編程學習大全網 - 源碼下載 - vue路由原理

vue路由原理

什麽是前端路由?

在單頁面中,路由描述的是URL和UI之間的單向映射關系,即URL的變化引起UI的更新,不需要刷新。

核心原理之壹:它只是更新視圖,不重新請求頁面

兩種方式:1、hash 利用URL中的hash(“#”) 2、利用history interface在h5中新增的方法

Hash和history的區別?

要實現前端路由,需要解決兩個核心:

1、如何改變URL不引起頁面的刷新?

2、如何檢測URL更新了?

分別從hash和history兩種方式實現上面的兩個核心問題:

1、hash模式

Hash是url中hash(‘#’)及後面的部分,常用作錨點在頁面進行導航

通過hashchange事件監聽URL的變化,改變url的方式只有這幾種:

(1)通過瀏覽器的前進和後退改變URL

(2)通過<a>標簽改變URL

(3)通過window.location改變URL

2、History模式

history提供了pushState和replaceState兩個方法,history提供類似hashchange事件的popstate事件,但popstate事件有些不同:

(1)通過瀏覽器前進後退改變URL時會出發popstate事件

(2)通過pushState和replaceState或者<a>標簽改變URL不會觸發popstate事件

(3)但是我們可以攔截pushState和replaceState的調用或者<a>標簽的點擊事件來檢測URL的變化

(4)通過js調用history的back、go、forward方法可觸發該事件

Vue Router的核心是,通過Vue.use註冊插件,在插件的install方法中獲取用戶配置的router對象。當瀏覽器地址發生變化的時候,根據router對象匹配相應的路由,獲取組件,然後把組件渲染在視圖上。

(1)如何在install方法中獲取用戶配置的router對象

可以利用在Vue.mixin混入生命周期函數beforeCreate,在beforeCreate函數中可以獲取到vue實例上的屬性並賦值到vue原型鏈上。

(2)如何觸發更新

Hash模式下:

通過location.hash改變hsh值,觸發更新,

通過監聽hashchange實踐監聽瀏覽器前進或者後退,觸發更新。

History模式下:

通過history.pushState修改瀏覽器地址,觸發更新;

通過監聽popstate事件監聽瀏覽器前進或者後退,觸發更新;

如何渲染router-view組件;

通過Vue.observable在router實例上創建壹個保存當前路由的監控對象current,

當瀏覽器地址變化的時候,改變監控對象current;

在router-view組建中監聽監控對象current的變化,當current變化後,獲取用戶註冊的相應component,並利用h函數將component渲染成vnodes,進而更新頁面視圖。

  • 上一篇:誰能給我講講收發文管理系統是什麽哦
  • 下一篇:群管系統權限指令說明
  • copyright 2024編程學習大全網