亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

vue-router實(shí)現(xiàn)原理

vibiu / 2906人閱讀

摘要:我們知道是的核心插件,而當(dāng)前項(xiàng)目一般都是單頁(yè)面應(yīng)用,也就是說(shuō)是應(yīng)用在單頁(yè)面應(yīng)用中的。原理是傳統(tǒng)的頁(yè)面應(yīng)用,是用一些超鏈接來(lái)實(shí)現(xiàn)頁(yè)面切換和跳轉(zhuǎn)的其實(shí)剛才單頁(yè)面應(yīng)用跳轉(zhuǎn)原理即實(shí)現(xiàn)原理實(shí)現(xiàn)原理原理核心就是更新視圖但不重新請(qǐng)求頁(yè)面。

近期面試,遇到關(guān)于vue-router實(shí)現(xiàn)原理的問(wèn)題,在查閱了相關(guān)資料后,根據(jù)自己理解,來(lái)記錄下。
我們知道vue-router是vue的核心插件,而當(dāng)前vue項(xiàng)目一般都是單頁(yè)面應(yīng)用,也就是說(shuō)vue-router是應(yīng)用在單頁(yè)面應(yīng)用中的。
那么,什么是單頁(yè)面應(yīng)用呢?在單頁(yè)面應(yīng)用出現(xiàn)之前,多頁(yè)面應(yīng)用又是什么樣子呢?

單頁(yè)面應(yīng)用與多頁(yè)面應(yīng)用 單頁(yè)面

即 第一次進(jìn)入頁(yè)面的時(shí)候會(huì)請(qǐng)求一個(gè)html文件,刷新清除一下。切換到其他組件,此時(shí)路徑也相應(yīng)變化,但是并沒(méi)有新的html文件請(qǐng)求,頁(yè)面內(nèi)容也變化了。

原理是:JS會(huì)感知到url的變化,通過(guò)這一點(diǎn),可以用js動(dòng)態(tài)的將當(dāng)前頁(yè)面的內(nèi)容清除掉,然后將下一個(gè)頁(yè)面的內(nèi)容掛載到當(dāng)前頁(yè)面上,這個(gè)時(shí)候的路由不是后端來(lái)做了,而是前端來(lái)做,判斷頁(yè)面到底是顯示哪個(gè)組件,清除不需要的,顯示需要的組件。這種過(guò)程就是單頁(yè)應(yīng)用,每次跳轉(zhuǎn)的時(shí)候不需要再請(qǐng)求html文件了。

多頁(yè)面

即 每一次頁(yè)面跳轉(zhuǎn)的時(shí)候,后臺(tái)服務(wù)器都會(huì)給返回一個(gè)新的html文檔,這種類型的網(wǎng)站也就是多頁(yè)網(wǎng)站,也叫做多頁(yè)應(yīng)用。
原理是:傳統(tǒng)的頁(yè)面應(yīng)用,是用一些超鏈接來(lái)實(shí)現(xiàn)頁(yè)面切換和跳轉(zhuǎn)的

其實(shí)剛才單頁(yè)面應(yīng)用跳轉(zhuǎn)原理即 vue-router實(shí)現(xiàn)原理

vue-router實(shí)現(xiàn)原理

原理核心就是 更新視圖但不重新請(qǐng)求頁(yè)面。

vue-router實(shí)現(xiàn)單頁(yè)面路由跳轉(zhuǎn),提供了三種方式:hash模式、history模式、abstract模式,根據(jù)mode參數(shù)來(lái)決定采用哪一種方式。

路由模式

vue-router 提供了三種運(yùn)行模式:
● hash: 使用 URL hash 值來(lái)作路由。默認(rèn)模式。
● history: 依賴 HTML5 History API 和服務(wù)器配置。查看 HTML5 History 模式。
● abstract: 支持所有 JavaScript 運(yùn)行環(huán)境,如 Node.js 服務(wù)器端

Hash模式

hash即瀏覽器url中#后面的內(nèi)容,包含#。hash是URL中的錨點(diǎn),代表的是網(wǎng)頁(yè)中的一個(gè)位置,單單改變#后的部分,瀏覽器只會(huì)加載相應(yīng)位置的內(nèi)容,不會(huì)重新加載頁(yè)面。
也就是說(shuō)

即#是用來(lái)指導(dǎo)瀏覽器動(dòng)作的,對(duì)服務(wù)器端完全無(wú)用,HTTP請(qǐng)求中,不包含#。

每一次改變#后的部分,都會(huì)在瀏覽器的訪問(wèn)歷史中增加一個(gè)記錄,使用”后退”按鈕,就可以回到上一個(gè)位置。

所以說(shuō)Hash模式通過(guò)錨點(diǎn)值的改變,根據(jù)不同的值,渲染指定DOM位置的不同數(shù)據(jù)。

History模式

HTML5 History API提供了一種功能,能讓開(kāi)發(fā)人員在不刷新整個(gè)頁(yè)面的情況下修改站點(diǎn)的URL,就是利用 history.pushState API 來(lái)完成 URL 跳轉(zhuǎn)而無(wú)須重新加載頁(yè)面;

由于hash模式會(huì)在url中自帶#,如果不想要很丑的 hash,我們可以用路由的 history 模式,只需要在配置路由規(guī)則時(shí),加入"mode: "history"",這種模式充分利用 history.pushState API 來(lái)完成 URL 跳轉(zhuǎn)而無(wú)須重新加載頁(yè)面。

有時(shí),history模式下也會(huì)出問(wèn)題:
eg:
hash模式下:xxx.com/#/id=5 請(qǐng)求地址為 xxx.com,沒(méi)有問(wèn)題。
history模式下:xxx.com/id=5 請(qǐng)求地址為 xxx.com/id=5,如果后端沒(méi)有對(duì)應(yīng)的路由處理,就會(huì)返回404錯(cuò)誤;

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

abstract模式

abstract模式是使用一個(gè)不依賴于瀏覽器的瀏覽歷史虛擬管理后端。
根據(jù)平臺(tái)差異可以看出,在 Weex 環(huán)境中只支持使用 abstract 模式。 不過(guò),vue-router 自身會(huì)對(duì)環(huán)境做校驗(yàn),如果發(fā)現(xiàn)沒(méi)有瀏覽器的 API,vue-router 會(huì)自動(dòng)強(qiáng)制進(jìn)入 abstract 模式,所以 在使用 vue-router 時(shí)只要不寫(xiě) mode 配置即可,默認(rèn)會(huì)在瀏覽器環(huán)境中使用 hash 模式,在移動(dòng)端原生環(huán)境中使用 abstract 模式。 (當(dāng)然,你也可以明確指定在所有情況下都使用 abstract 模式)。

具體更加詳細(xì)的文章,請(qǐng)參考:
Vue番外篇 -- vue-router淺析原理
vue-router的原理

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/102733.html

相關(guān)文章

  • 前端路由簡(jiǎn)介以及vue-router實(shí)現(xiàn)原理

    摘要:后端路由簡(jiǎn)介路由這個(gè)概念最先是后端出現(xiàn)的。前端路由模式隨著的流行,異步數(shù)據(jù)請(qǐng)求交互運(yùn)行在不刷新瀏覽器的情況下進(jìn)行。通過(guò)這些就能用另一種方式來(lái)實(shí)現(xiàn)前端路由了,但原理都是跟實(shí)現(xiàn)相同的。 后端路由簡(jiǎn)介 路由這個(gè)概念最先是后端出現(xiàn)的。在以前用模板引擎開(kāi)發(fā)頁(yè)面時(shí),經(jīng)常會(huì)看到這樣 http://www.xxx.com/login 大致流程可以看成這樣: 瀏覽器發(fā)出請(qǐng)求 服務(wù)器監(jiān)聽(tīng)到80端口(或4...

    tuomao 評(píng)論0 收藏0
  • 關(guān)于Vue2一些值得推薦的文章 -- 五、六月份

    摘要:五六月份推薦集合查看最新的請(qǐng)點(diǎn)擊集前端最近很火的框架資源定時(shí)更新,歡迎一下。蘇幕遮燎沈香宋周邦彥燎沈香,消溽暑。鳥(niǎo)雀呼晴,侵曉窺檐語(yǔ)。葉上初陽(yáng)乾宿雨,水面清圓,一一風(fēng)荷舉。家住吳門(mén),久作長(zhǎng)安旅。五月漁郎相憶否。小楫輕舟,夢(mèng)入芙蓉浦。 五、六月份推薦集合 查看github最新的Vue weekly;請(qǐng)::點(diǎn)擊::集web前端最近很火的vue2框架資源;定時(shí)更新,歡迎 Star 一下。 蘇...

    sutaking 評(píng)論0 收藏0
  • 關(guān)于Vue2一些值得推薦的文章 -- 五、六月份

    摘要:五六月份推薦集合查看最新的請(qǐng)點(diǎn)擊集前端最近很火的框架資源定時(shí)更新,歡迎一下。蘇幕遮燎沈香宋周邦彥燎沈香,消溽暑。鳥(niǎo)雀呼晴,侵曉窺檐語(yǔ)。葉上初陽(yáng)乾宿雨,水面清圓,一一風(fēng)荷舉。家住吳門(mén),久作長(zhǎng)安旅。五月漁郎相憶否。小楫輕舟,夢(mèng)入芙蓉浦。 五、六月份推薦集合 查看github最新的Vue weekly;請(qǐng)::點(diǎn)擊::集web前端最近很火的vue2框架資源;定時(shí)更新,歡迎 Star 一下。 蘇...

    khs1994 評(píng)論0 收藏0
  • 從頭開(kāi)始學(xué)習(xí)vue-router

    摘要:路由模塊的本質(zhì)就是建立起和頁(yè)面之間的映射關(guān)系。這時(shí)候我們可以直接利用傳值了使用來(lái)匹配路由,然后通過(guò)來(lái)傳遞參數(shù)跳轉(zhuǎn)對(duì)應(yīng)路由配置于是我們可以獲取參數(shù)六配置子路由二級(jí)路由實(shí)際生活中的應(yīng)用界面,通常由多層嵌套的組件組合而成。 一、前言 要學(xué)習(xí)vue-router就要先知道這里的路由是什么?為什么我們不能像原來(lái)一樣直接用標(biāo)簽編寫(xiě)鏈接哪?vue-router如何使用?常見(jiàn)路由操作有哪些?等等這些問(wèn)...

    tommego 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<