vue3如何使用vue-router

上一篇文章講了vue3+vue-cli4x如何創(chuàng)建項(xiàng)目 傳送門

vue-router@next文檔 該文檔暫時(shí)還沒有中文

現(xiàn)在我們來講一下vue3如何使用vue-router
打開剛剛創(chuàng)建的vue3+vue-cli4x項(xiàng)目的package.json文件可以看到?jīng)]有給我們提供vue-router,我們需要自己安裝

package.json

安裝vue-router@next

$ npm install vue-router@4.0.0-beta.13

安裝完成

安裝完成

打開main.js 發(fā)現(xiàn)變化挺大的 附上vue2vue3的對(duì)比
vue2和vue3的對(duì)比

我們?cè)?code>src下創(chuàng)建route文件夾和下面的index.js
創(chuàng)建文件夾

打開index.js 引入router

import { createRouter,createWebHashHistory} from "vue-router";

這里我們使用hash模式 需要history模式的同學(xué)請(qǐng)點(diǎn)擊這路由模式
這里方便演示我們?cè)?code>src文件夾下創(chuàng)建兩個(gè)頁面

創(chuàng)建頁面

router中注冊(cè)

const home = () => import("../home")
const login = () => import("../login")

const routes = [
  { path: "/", redirect: "/home" },
  {
    path: "/home",
    name: "home",
    component: home
  },
  {
    path: "/login",
    name: "login",
    component: login
  }
]

然后導(dǎo)出router

export const router = createRouter({
  history: createWebHashHistory(),
  routes: routes
})

這里我們修改一下main.js 方便我們使用

修改main.js

main.js中引入router 并掛載

import { createApp } from 'vue'
import App from './App.vue'
import router from './route'

const app = createApp(App)
app.use(router)
app.mount('#app')

到這里就完成了引入和掛載,現(xiàn)在來講一下如何在頁面中使用
打開login.vue
html中添加一個(gè)按鈕并綁定一個(gè)點(diǎn)擊事件

<template>
  <p>index</p>
  <button @click="toHome">toHome</button>
</template>

接著我們?cè)陧撁嬷幸?code>router并使用

<script>
import { useRoute, useRouter } from 'vue-router'
export default {
  setup () {
    const route = useRoute()
    const router = useRouter()
    return {}
  },
}

引入的useRoute,useRouter 相當(dāng)于vue2的 this.$route()this.$router()
點(diǎn)擊按鈕就能跳轉(zhuǎn)到home.vue頁面了

import { useRouter } from 'vue-router'
export default {
  setup () {
    const router = useRouter()
    const toHome = (() => {
      router.push({
        name: 'home'
      })
    })
    return {
      toHome
    }
  },
}

下面是整體頁面代碼
main.js

import { createApp } from 'vue'
import App from './App.vue'
import { router } from './route'

const app = createApp(App)
app.use(router)
app.mount('#app')

route下的index.js

import { createRouter, createWebHashHistory } from "vue-router"

const home = () => import("../home")
const login = () => import("../login")

const routes = [
  { path: "/", redirect: "/home" },
  {
    path: "/home",
    name: "home",
    component: home
  },
  {
    path: "/login",
    name: "login",
    component: login
  }
]

export const router = createRouter({
  history: createWebHashHistory(),
  routes: routes
})

login.vue

<template>
  <p>index</p>
  <button @click="toHome">toHome</button>
</template>
<script>
import { useRouter } from 'vue-router'
export default {
  setup () {
    const router = useRouter()
    const toHome = (() => {
      router.push({
        name: 'home'
      })
    })
    return {
      toHome
    }
  },
}
</script>
<style  scoped>
</style>

home.vue

<template>
  <p>home</p>
</template>
<script>
export default {

}
</script>
<style  scoped>
</style>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容