Vue路由组件vue-router

Vue路由组件是一种用于快速构建单页面应用程序(SPA)的插件。它基于Vue.js的核心库,提供了一种简单且灵活的方式来管理页面之间的导航。

## 安装

首先,在使用Vue路由组件之前,需要确保已经安装了Vue.js。然后可以通过npm或yarn安装vue-router:

```shell

# 使用npm

npm install vue-router

# 使用yarn

yarn add vue-router

```

## 使用方法

在使用Vue路由组件之前,需要先创建一个路由实例,然后将其与Vue实例进行关联。在创建路由实例时,需要传递一个路由配置对象,该对象包含了路由的路径和对应的组件。

```javascript

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 = new VueRouter({

routes

})

new Vue({

router

}).$mount('#app')

```

在上面的例子中,我们创建了两个路由,分别对应根路径和/about路径,对应的组件分别是Home和About。然后,创建了一个VueRouter实例并将路由配置对象传递给它。最后,将VueRouter实例关联到Vue实例中的router属性上。

在模板中使用路由组件非常简单,只需要使用``组件来生成导航链接,以及使用``组件来展示当前路由对应的组件。

```html

Home

About

```

上面的代码中,我们使用了``组件来生成两个导航链接,分别是Home和About。`to`属性指定了链接的路径。在相应的路径上切换时,``组件会根据当前路径显示对应的组件。

## 路由嵌套

Vue路由组件还支持嵌套路由,也就是在一个组件中嵌套另一个组件。在路由配置对象中,可以为某个路由指定一个子路由配置数组,类似于树形结构。

```javascript

const routes = [

{

path: '/',

component: Home,

children: [

{ path: '', component: Child1 },

{ path: 'child2', component: Child2 },

{ path: 'child3', component: Child3 }

]

},

{

path: '/about',

component: About

}

]

```

上面的例子中,我们为根路径`/`指定了三个子路由,分别是Child1、Child2和Child3。当路径为根路径时,会显示Child1组件;当路径为`/child2`时,会显示Child2组件;当路径为`/child3`时,会显示Child3组件。

在模板中使用嵌套路由时,``组件也需要根据指定的路径来生成导航链接。

```html

Home

Child2

Child3

```

## 路由传参

在实际开发中,我们常常需要将参数传递给路由组件。Vue路由组件支持通过路由路径传参、通过查询参数传参、通过路由对象传参等多种方式。

通过路由路径传参:

```javascript

const routes = [

{ path: '/user/:id', component: User }

]

```

在组件中可以通过`$route.params`来获取路由参数:

```javascript

export default {

mounted() {

console.log(this.$route.params.id)

}

}

```

通过查询参数传参:

```javascript

const routes = [

{ path: '/user', component: User }

]

```

在组件中可以通过`$route.query`来获取查询参数:

```javascript

export default {

mounted() {

console.log(this.$route.query.id)

}

}

```

通过路由对象传参:

```javascript

const routes = [

{ path: '/user', component: User }

]

```

在导航时可以通过`params`或`query`属性传递参数:

```javascript

this.$router.push({ path: '/user', params: { id: '123' } })

this.$router.push({ path: '/user', query: { id: '123' } })

```

## 守卫

Vue路由组件还支持路由的导航守卫,用于在导航路由前后执行一些操作。它可以用来验证用户的权限、检查表单是否保存等。

导航守卫分为全局守卫、路由独享守卫和组件内守卫。

全局守卫是在整个应用程序中都会起作用的,包括路由的切换前和切换后。

```javascript

// 全局前置守卫

router.beforeEach((to, from, next) => {

console.log('before each')

next()

})

// 全局后置守卫

router.afterEach((to, from) => {

console.log('after each')

})

```

路由独享守卫是只针对特定的路由进行操作。

```javascript

const routes = [

{

path: '/user',

component: User,

beforeEnter: (to, from, next) => {

console.log('before enter')

next()

}

}

]

```

组件内守卫是只对当前路由组件起作用,由组件实例的`beforeRouteEnter`、`beforeRouteUpdate`和`beforeRouteLeave`方法组成。

```javascript

export default {

beforeRouteEnter(to, from, next) {

console.log('before route enter')

next()

},

beforeRouteUpdate(to, from, next) {

console.log('before route update')

next()

},

beforeRouteLeave(to, from, next) {

console.log('before route leave')

next()

}

}

```

## 示例说明

假设我们要开发一个简单的博客应用程序。我们需要实现以下几个页面:

- 首页:用于展示博客列表

- 博客详情页:用于展示某篇博客的详细信息

- 创建博客页:用于创建一篇新的博客

首先,创建一个Vue组件用于展示博客列表:

```vue

```

然后,创建一个Vue组件用于展示博客详情:

```vue

```

最后,创建一个Vue组件用于创建博客:

```vue

```

最后,在入口文件中配置路由和创建Vue实例:

```javascript

import Vue from 'vue'

import VueRouter from 'vue-router'

import App from './App.vue'

import BlogList from './components/BlogList.vue'

import BlogDetail from './components/BlogDetail.vue'

import CreateBlog from './components/CreateBlog.vue'

Vue.use(VueRouter)

const routes = [

{ path: '/', component: BlogList },

{ path: '/blog/:id', component: BlogDetail },

{ path: '/create', component: CreateBlog }

]

const router = new VueRouter({

routes

})

new Vue({

router,

render: h => h(App)

}).$mount('#app')

```

在模板中使用``和``组件来实现导航和视图显示:

```html

```

这样,我们就完成了一个简单的博客应用程序的开发。可以通过导航链接切换页面,从接口请求获取博客列表和博客详情,并且可以创建新的博客。

总结:

通过本文的介绍,我们了解了Vue路由组件vue-router的基本使用方法和几个重要概念,包括路由实例、路由配置、路由嵌套、路由传参和守卫等。并且通过一个示例说明了如何使用Vue路由组件来构建一个单页面应用程序。希望本文对你理解和使用Vue路由组件有所帮助。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(118) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部