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

10分鐘快速上手VueRouter4.x教程

 更新時(shí)間:2022年03月01日 10:15:33   作者:一碗周  
Vue Router目前最新版本是4.X,本文主要主要介紹了10分鐘快速上手VueRouter4.x教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

寫在前面

Vue Router是Vue團(tuán)隊(duì)的研發(fā)的一款與Vue.js核心深度集成的一款路由插件,使Vue構(gòu)建單頁面程序變得非常的簡單;Vue Router目前最新版本是4.X,也是Vue3推薦使用的版本,這篇文章我們就來學(xué)習(xí)一下Vue Router4.X。

URL.hash與History

Vue Router中存在兩種history(記錄歷史路由),分別是URL.hash和HTML5中提供的History兩種。

hash歷史記錄對(duì)于沒有主機(jī)的Web應(yīng)用程序(例如file://),或當(dāng)配置服務(wù)器不能處理任意的URL時(shí)非常有用,但是hash的SEO非常差勁;

History歷史是HTML5中新增的,對(duì)于IE來說不是很友好,但是Vue3都放棄IE了,你也就不用考慮IE了;這種方式是目前最常見的一種方式,但是應(yīng)用程序必須通過http協(xié)議被提供服務(wù)。

安裝與使用流程

首先我們安裝Vue Router,命令如下:

npm i vue-router

然后在main.js中寫入如下代碼:

import { createApp } from 'vue'
import App from './App.vue'
// 1 引入 createRouter
import { createRouter, createWebHistory } from 'vue-router'
// 2 定義路由映射表
const routes = [
  /* more router */
]
// 3 創(chuàng)建路由實(shí)例,并傳遞對(duì)應(yīng)配置
const router = createRouter({
  // history 模式 這里使用createWebHistory
  history: createWebHistory(),
  // 傳遞路由映射表
  routes
})
createApp(App).use(router).mount('#app')

上面的代碼中的routes如果多的話,可以定義一個(gè)router.js文件,將其進(jìn)行抽離,示例代碼如下:

router.js

export default [
  /* more router */
]

main.js

import { createApp } from 'vue'
import App from './App.vue'
// 2 引入路由映射表
import routes from './router'

// 1 引入 createRouter
import { createRouter, createWebHistory } from 'vue-router'
// 3 創(chuàng)建路由實(shí)例,并傳遞對(duì)應(yīng)配置
const router = createRouter({
  // history 模式 這里使用createWebHistory
  history: createWebHistory(),
  // 傳遞路由映射表
  routes
})
createApp(App).use(router).mount('#app')

或者**直接在****router.js中直接導(dǎo)出一個(gè)路由實(shí)例,在main.js**中使用即可(這種方式更常用)。

router-link和router-view

router-link

<router-link>是Vue提供的自定義組件,用于創(chuàng)建鏈接,在Vue中并沒有使用原生的<a>,因?yàn)?code><a>改變URL后會(huì)重新加載頁面而<router-link>不會(huì);關(guān)于<router-link>組件的細(xì)節(jié)支持哪些屬性,可以參考文檔。

router-view

<router-view>組件用于與URL對(duì)應(yīng)的組件,例如下面這段代碼:

<template>
  <router-link to="/hello"
    ><img alt="Vue logo" src="./assets/logo.png"
  /></router-link>
  <router-view></router-view>
</template>

然后我們的router.js的代碼如下:

import RootComponent from './components/root.vue'
export default [
  {
    path: '/',
    // 引入組件
    component: RootComponent
  },
  {
    path: '/hello',
    // 路由懶加載引入組件
    component: () => import('./components/HelloWorld.vue')
  }
]

關(guān)于其他配置項(xiàng),可以參考文檔。

代碼運(yùn)行結(jié)果如下所示:

路由懶加載

當(dāng)我們的應(yīng)用越來越大時(shí),打包后的JavaScript代碼也會(huì)特別的大,這個(gè)時(shí)候需要我們將整個(gè)應(yīng)用拆分為不同的塊,而Vue Router就支持這個(gè)功能,我們只需要使用動(dòng)態(tài)導(dǎo)入替換靜態(tài)導(dǎo)入即可,就比如上面那段代碼:

component: () => import('./components/HelloWorld.vue')

然后打包(webpack、Vite)工具就會(huì)將這些動(dòng)態(tài)導(dǎo)入的組件單獨(dú)打包,如下圖所示:

動(dòng)態(tài)路由

VueRouter允許我們動(dòng)態(tài)的去設(shè)置路由匹配規(guī)則,例如我們現(xiàn)在有一個(gè)User組件,組件的內(nèi)容會(huì)根據(jù)不同的ID展示不同的內(nèi)容,設(shè)置方法只需要通過:參數(shù)名的形式去設(shè)置即可。

例如:

{
  path: '/user/:id',
  component: () => import('@/components/User')
}

在模板中跳轉(zhuǎn)如下:

<router-link to="/user/10010"></router-link>

或者通過useRouter這個(gè)hook提供的push方法,例如:

import { useRouter } from 'vue-router'
const {push} = useRouter()
push({
  path: '/user',
  params: { id: 10010 }
})
// 或者
let id = 10010
push('/user/' + id)

獲取路由地址可以通過useRoute這個(gè)hook,用法與useRouter一致。

匹配所有路由

VueRouter的動(dòng)態(tài)路由允許我們匹配哪些沒有匹配到的路由,示例代碼如下:

{
  path: '/:pathMatch(.*)',
  component: () => import('./components/Page404.vue'),
},

當(dāng)前面的路由匹配未成功時(shí),就會(huì)匹配這個(gè)路由。

路由嵌套

現(xiàn)在我們有一個(gè)需求,就是在HelloWorld組件下存兩個(gè)組件,需要切換著兩個(gè)組件。

這個(gè)時(shí)候路由嵌套的就發(fā)揮作用了,其實(shí)路由嵌套比較簡單,就是通過路由配置中的一個(gè)children屬性來實(shí)現(xiàn),示例代碼如下:

HelloWorld.vue

<template>
  <h1>Hello World</h1>
  <div
    style="
      display: flex;
      justify-content: space-between;
      width: 240px;
      margin: 0 auto;
    "
  >
    <router-link to="about">about</router-link>
    <router-link to="user">user</router-link>
  </div>
  <router-view></router-view>
</template>

router.js

{
  path: '/hello',
  // 路由懶加載引入組件
  component: () => import('./components/HelloWorld.vue'),
  children: [
    {
      path: 'about',
      component: () => import('./components/about.vue'),
    },
    {
      path: 'user',
      component: () => import('./components/user.vue'),
    },
  ],
},

子組件比較簡單,只有一個(gè)<h1>標(biāo)簽,最終效果如下:

寫在最后

到此這篇關(guān)于10分鐘快速上手VueRouter4.x教程的文章就介紹到這了,更多相關(guān)VueRouter4.x入門內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue3中其他的Composition?API詳解

    Vue3中其他的Composition?API詳解

    這篇文章主要介紹了Vue3中其他的Composition?API,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Vue中v-model的使用示例詳解

    Vue中v-model的使用示例詳解

    v-model就是vue的雙向綁定的指令,能將頁面上控件輸入的值同步更新到相關(guān)綁定的data屬性,也會(huì)在更新data綁定屬性時(shí)候,更新頁面上輸入控件的值,這篇文章主要介紹了Vue之v-model的使用,需要的朋友可以參考下
    2025-04-04
  • vue一個(gè)頁面實(shí)現(xiàn)音樂播放器的示例

    vue一個(gè)頁面實(shí)現(xiàn)音樂播放器的示例

    這篇文章主要介紹了vue一個(gè)頁面實(shí)現(xiàn)音樂播放器的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02
  • 通過html文件來使用Vue的單文件組件形式詳解

    通過html文件來使用Vue的單文件組件形式詳解

    這篇文章主要介紹了通過html文件來使用Vue的單文件組件形式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Vue3 diff算法的簡單解刨

    Vue3 diff算法的簡單解刨

    如今Vue3的勢頭正盛,在diff算法方面也做了相應(yīng)的變化,利用到了最長遞增子序列把性能又提升了一個(gè)檔次。本文就來帶大家簡單解刨一下Vue3中的diff算法
    2023-02-02
  • Vue中使一個(gè)div鋪滿全屏的實(shí)現(xiàn)

    Vue中使一個(gè)div鋪滿全屏的實(shí)現(xiàn)

    最近在項(xiàng)目開發(fā)中,就遇到了這個(gè)問題,Vue中如何使一個(gè)div鋪滿全屏,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Vue Axios異步與數(shù)據(jù)類型轉(zhuǎn)換問題淺析

    Vue Axios異步與數(shù)據(jù)類型轉(zhuǎn)換問題淺析

    總的來說這并不是一道難題,那為什么要拿出這道題介紹?拿出這道題真正想要傳達(dá)的是解題的思路,以及不斷優(yōu)化探尋最優(yōu)解的過程。希望通過這道題能給你帶來一種解題優(yōu)化的思路,Axios是一個(gè)開源的可以用在瀏覽器端和Node JS的異步通信框架,主要作用就是實(shí)現(xiàn)AJAX異步通信
    2023-01-01
  • vue?父子組件共用mixins的注意點(diǎn)

    vue?父子組件共用mixins的注意點(diǎn)

    這篇文章主要介紹了vue?父子組件共用mixins的注意點(diǎn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue3選項(xiàng)式api如何監(jiān)控?cái)?shù)組變化

    vue3選項(xiàng)式api如何監(jiān)控?cái)?shù)組變化

    這篇文章主要介紹了vue3選項(xiàng)式api如何監(jiān)控?cái)?shù)組變化問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • vue3中關(guān)于路由hash與History的設(shè)置

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

    這篇文章主要介紹了vue3中關(guān)于路由hash與History的設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04

最新評(píng)論

杂多县| 贡山| 汝南县| 荣成市| 万山特区| 西安市| 安泽县| 满洲里市| 安泽县| 宜宾县| 武安市| 越西县| 嵊州市| 炎陵县| 都江堰市| 锡林郭勒盟| 门源| 芦山县| 澳门| 贵溪市| 安西县| 龙泉市| 宁阳县| 清苑县| 平泉县| 泽库县| 黄浦区| 洮南市| 醴陵市| 来安县| 新巴尔虎左旗| 蒙自县| 合江县| 涟水县| 清原| 黔东| 巫山县| 巴林右旗| 自治县| 湛江市| 长阳|