最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3中關(guān)于路由hash與History的設(shè)置

 更新時(shí)間:2023年04月17日 09:18:07   作者:前端程序猿i  
這篇文章主要介紹了vue3中關(guān)于路由hash與History的設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue3路由hash與History的設(shè)置

1、history 關(guān)鍵字:createWebHistory

import { createRouter, createWebHistory } from 'vue-router'
const routes = [ {
? path: '/userinfo',
? name: 'UserInfo',
? component: () => import('../views/UserInfo.vue')
}]
const router = createRouter({
? history: createWebHistory(process.env.BASE_URL),
? routes
})
export default router

history模式直接指向history對(duì)象,它表示當(dāng)前窗口的瀏覽歷史,history對(duì)象保存了當(dāng)前窗口訪問過的所有頁面網(wǎng)址。URL中沒有#,它使用的是傳統(tǒng)的路由分發(fā)模式,即用戶在輸入一個(gè)URL時(shí),服務(wù)器會(huì)接收這個(gè)請(qǐng)求,并解析這個(gè)URL,然后做出相應(yīng)的邏輯處理。

特點(diǎn):

當(dāng)使用history模式時(shí),URL就像這樣:hhh.com/user/id。相比hash模式更加好看。

雖然history模式不需要#。但是,它也有自己的缺點(diǎn),就是在刷新頁面的時(shí)候,如果沒有相應(yīng)的路由或資源,就會(huì)刷出404來。

history api可以分為兩大部分,切換歷史狀態(tài) 和 修改歷史狀態(tài):

修改歷史狀態(tài):

包括了 HTML5 History Interface 中新增的 pushState() 和 replaceState() 方法,這兩個(gè)方法應(yīng)用于瀏覽器的歷史記錄棧,提供了對(duì)歷史記錄進(jìn)行修改的功能。只是當(dāng)他們進(jìn)行修改時(shí),雖然修改了url,但瀏覽器不會(huì)立即向后端發(fā)送請(qǐng)求。如果要做到改變url但又不刷新頁面的效果,就需要前端用上這兩個(gè)API。

切換歷史狀態(tài):

包括forward()、back()、go()三個(gè)方法,對(duì)應(yīng)瀏覽器的前進(jìn),后退,跳轉(zhuǎn)操作。

配置:

想要設(shè)置成history模式,就要進(jìn)行以下的配置(后端也要進(jìn)行配置):

const router = new VueRouter({
? mode: 'history',
? routes: [...]
})

2、hash 關(guān)鍵字:createWebHashHistory

import { createRouter, createWebHashHistory } from 'vue-router'
const routes = [{
? path: '/userinfo',
? name: 'UserInfo',
? component: () => import('../views/UserInfo.vue')
}]
const router = createRouter({
? history: createWebHashHistory(),
? routes
})
export default router

hash模式是開發(fā)中默認(rèn)的模式,也稱作錨點(diǎn),它的URL帶著一個(gè)#,例如:www.abc.com/#/vue,它的hash值就是#/vue。

特點(diǎn):

hash值會(huì)出現(xiàn)在URL里面,但是不會(huì)出現(xiàn)在HTTP請(qǐng)求中,對(duì)后端沒有影響。所以改變hash值不會(huì)重新加載頁面。

這種模式的瀏覽器支持度很好,低版本的IE瀏覽器也支持這種模式。

hash路由被稱為是前端路由,已經(jīng)成為SPA(單頁面應(yīng)用)的標(biāo)配。

原理:

hash模式的主要原理就是onhashchange()事件:

window.onhashchange = function(event){
? ? console.log(event.oldURL, event.newURL);
? ? let hash = location.hash.slice(1);
}

 

使用onhashchange()事件的好處就是,在頁面的hash值發(fā)生變化時(shí),無需向后端發(fā)起請(qǐng)求,window就可以監(jiān)聽事件的改變,并按規(guī)則加載相應(yīng)的代碼。

除此之外,hash值變化對(duì)應(yīng)的URL都會(huì)被瀏覽器記錄下來,這樣瀏覽器就能實(shí)現(xiàn)頁面的前進(jìn)和后退。雖然是沒有請(qǐng)求后端服務(wù)器,但是頁面的hash值和對(duì)應(yīng)的URL關(guān)聯(lián)起來了。

獲取頁面hash變化的方法:

// 監(jiān)聽,當(dāng)路由發(fā)生變化的時(shí)候執(zhí)行
watch: {
? $route: {
? ? handler: function(val, oldVal){
? ? ? console.log(val);
? ? },
? ? // 深度觀察監(jiān)聽
? ? deep: true
? }
},

vue2和vue3中路由的區(qū)別和寫法

Vue 2 和 Vue 3 中路由的主要區(qū)別在于使用的路由庫不同。在 Vue 2 中,通常使用 Vue Router 作為路由庫;而在 Vue 3 中,Vue Router 仍然是官方推薦的路由庫,但也可以選擇使用新的路由庫 - Vue Router Next。

下面分別介紹在 Vue 2 和 Vue 3 中使用 Vue Router 的路由寫法:

vue3中使用 Vue Router

安裝 Vue Router:在終端中執(zhí)行以下命令進(jìn)行安裝:

npm install vue-router

引入 Vue Router 并配置路由:在 main.js 中引入 Vue Router,并配置路由規(guī)則和組件對(duì)應(yīng)關(guān)系。

示例代碼如下:

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from './components/Home.vue'
import About from './components/About.vue'
?
Vue.use(VueRouter)
?
const routes = [
? { path: '/', component: Home },
? { path: '/about', component: About }
]
?
const router = newVueRouter({
? routes // 等價(jià)于 routes: routes
})
?
newVue({
? el: '#app',
? router,
? render: h =>h(App)
})

在模板中使用路由:在模板中使用 router-link 組件來實(shí)現(xiàn)路由跳轉(zhuǎn),router-view 組件用于顯示對(duì)應(yīng)的組件內(nèi)容。

示例代碼如下:

<template>
? ? <div id="app">
? ? ? ? <nav>
? ? ? ? ? ? <router-link to="/">Home</router-link>
? ? ? ? ? ? <router-link to="/about">About</router-link>
? ? ? ? </nav>
? ? ? ? <router-view></router-view>
? ? </div>
</template>

vue3中使用 Vue Router Next

安裝 Vue Router Next:在終端中執(zhí)行以下命令進(jìn)行安裝:

npm install vue-router@4

引入 Vue Router Next 并配置路由:在 main.js 中引入 Vue Router Next,并配置路由規(guī)則和組件對(duì)應(yīng)關(guān)系。

示例代碼如下:

import { createApp } from 'vue'
import { createRouter, createWebHistory } from 'vue-router'
import Home from './components/Home.vue'
import About from './components/About.vue'
import App from './App.vue'
const routes = [
? { path: '/', component: Home },
? { path: '/about', component: About }
]
?
const router = createRouter({
? history: createWebHistory(),
? routes
})
?
const app = createApp(App)
app.use(router)
app.mount('#app')

在模板中使用路由:在模板中使用 router-link 組件來實(shí)現(xiàn)路由跳轉(zhuǎn),router-view 組件用于顯示對(duì)應(yīng)的組件內(nèi)容。示例代碼如下:

<template>
? ? <div id="app">
? ? ? ? <nav>
? ? ? ? ? ? <router-link to="/">Home</router-link>
? ? ? ? ? ? <router-link to="/about">About</router-link>
? ? ? ? </nav>
? ? ? ? <router-view></router-view>
? ? </div>
</template>

心得:

總體來說,在使用 Vue Router 方面,Vue 2 和 Vue 3 的寫法類似,但是在具體細(xì)節(jié)上還是有所差異。如果需要更深入地了解 Vue Router 的使用方法和技巧,建議參考官方文檔或相關(guān)教程。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue開發(fā)table數(shù)據(jù)合并實(shí)現(xiàn)詳解

    vue開發(fā)table數(shù)據(jù)合并實(shí)現(xiàn)詳解

    這篇文章主要為大家介紹了vue開發(fā)table數(shù)據(jù)合并實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • vue?router如何實(shí)現(xiàn)tab切換

    vue?router如何實(shí)現(xiàn)tab切換

    這篇文章主要介紹了vue?router如何實(shí)現(xiàn)tab切換,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • Vue3+Canvas實(shí)現(xiàn)簡易的貪吃蛇游戲

    Vue3+Canvas實(shí)現(xiàn)簡易的貪吃蛇游戲

    貪吃蛇作為一個(gè)經(jīng)典的小游戲,是很多人兒時(shí)的記憶,當(dāng)時(shí)的掌機(jī)、諾基亞手機(jī)里面都有它的身影。本文將用Vue3?Canvas來復(fù)刻一下這款游戲,感興趣的可以了解一下
    2022-07-07
  • 強(qiáng)烈推薦!Vue3.2中的setup語法糖

    強(qiáng)烈推薦!Vue3.2中的setup語法糖

    script?setup是vue3的新語法糖,并不是新增的功能模塊,只是簡化了以往的組合式API必須返回(return)的寫法,并且有更好的運(yùn)行時(shí)性能,這篇文章主要給大家介紹了關(guān)于Vue3.2中setup語法糖的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • vue實(shí)現(xiàn)用v-bind給src和href賦值

    vue實(shí)現(xiàn)用v-bind給src和href賦值

    這篇文章主要介紹了vue實(shí)現(xiàn)用v-bind給src和href賦值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue中使用axios固定url請(qǐng)求前綴

    vue中使用axios固定url請(qǐng)求前綴

    這篇文章主要介紹了vue中使用axios固定url請(qǐng)求前綴的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • vue2.0設(shè)置proxyTable使用axios進(jìn)行跨域請(qǐng)求的方法

    vue2.0設(shè)置proxyTable使用axios進(jìn)行跨域請(qǐng)求的方法

    這篇文章主要介紹了vue2.0設(shè)置proxyTable使用axios進(jìn)行跨域請(qǐng)求,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • 詳解Vue中的路由與多種守衛(wèi)

    詳解Vue中的路由與多種守衛(wèi)

    路由守衛(wèi)又稱導(dǎo)航守衛(wèi),指是路由跳轉(zhuǎn)前、中、后過程中的一些鉤子函數(shù),這篇文章主要介紹了Vue中的路由與多種守衛(wèi),需要的朋友可以參考下
    2023-02-02
  • Vue axios 將傳遞的json數(shù)據(jù)轉(zhuǎn)為form data的例子

    Vue axios 將傳遞的json數(shù)據(jù)轉(zhuǎn)為form data的例子

    今天小編就為大家分享一篇Vue axios 將傳遞的json數(shù)據(jù)轉(zhuǎn)為form data的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • ResizeObserver?loop?limit?exceeded報(bào)錯(cuò)原因及解決方案

    ResizeObserver?loop?limit?exceeded報(bào)錯(cuò)原因及解決方案

    這篇文章主要給大家介紹了關(guān)于ResizeObserver?loop?limit?exceeded報(bào)錯(cuò)原因及解決的相關(guān)資料,公司項(xiàng)目監(jiān)聽系統(tǒng)中發(fā)現(xiàn)一個(gè)高頻錯(cuò)誤ResizeObserver loop limit exceeded,而瀏覽器的console中卻沒有提示,需要的朋友可以參考下
    2023-09-09

最新評(píng)論

桃源县| 深圳市| 区。| 嘉黎县| 塔城市| 厦门市| 建水县| 喀什市| 青河县| 忻城县| 慈溪市| 临沭县| 天祝| 孝义市| 乌什县| 开封县| 焦作市| 普陀区| 田林县| 辉县市| 龙里县| 依安县| 万宁市| 土默特右旗| 开封县| 平安县| 来凤县| 阿荣旗| 南昌县| 临澧县| 同德县| 左云县| 明水县| 昌都县| 新源县| 巨鹿县| 永济市| 闵行区| 公主岭市| 通江县| 台南县|