Nuxt的路由配置和参数传递方式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Nuxt的路由配置和参数传递⽅式
学习前端框架都要学习路由机制,因为路由可以体现我们的业务逻辑,把模块串联起来,让程序换发光彩。
那简单的说路由就是我们的跳转机制,也可以简单理解成链接跳转。
Nuxt.js的路由并不复杂,它给我们进⾏了封装,让我们节省了很多配置环节。
简单路由Demo
我们现在在根⽬录的pages⽂件下新建两个⽂件夹,about和news(模仿关于我们和新闻的功能模块)
在about⽂件夹下新建index.vue⽂件,代码如下:
<template>
<div>
<h2>About Index page</h2>
<ul>
<li><a href="/" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Home</a></li>
</ul>
</div>
</template>
在news⽂件夹下新建index.vue⽂件,代码如下:
<template>
<div>
<h2>News Index page</h2>
<ul>
<li><a href="/" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Home</a></li>
</ul>
</div>
</template>
修改原来的pages⽂件夹下的index.vue,删除没⽤的代码,写⼊下⾯链接代码:
<template>
<div>
<ul>
<li><a href="/" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >HOME</a></li>
<li><a href="/about" rel="external nofollow" >ABOUT</a></li>
<li><a href="/news" rel="external nofollow" >NEWS</a></li>
</ul>
</div>
</template>
<script>
export default {
comments:{}
}
</script>
<style lang="less" scoped>
</style>
结果如下:
<nuxt-link>标签
虽然上⾯的例⼦跳转已经成功,但是Nuxt.js并不推荐这个中<a>标签的作法,它为我们准备了<nuxt-link>标签(vue中叫组件)。
我们<a>标签替换成<nuxt-link>
about⽂件夹下新建index.vue
<template>
<div>
<h2>About Index page</h2>
<ul>
<li><nuxt-link :to="{name:'index'}">Home</nuxt-link></li>
</ul>
</div>
</template>
news⽂件夹下新建index.vue
<template>
<div>
<h2>News Index page</h2>
<ul>
<li><nuxt-link :to="{name:'index'}">Home</nuxt-link></li>
</ul>
</div>
</template>
pages⽂件夹下的index.vue
<template>
<div>
<ul>
<li><nuxt-link :to="{name:'index'}">HOME</nuxt-link></li>
<li><nuxt-link :to="{name:'about'}">ABOUT</nuxt-link></li>
<li><nuxt-link :to="{name:'news'}">NEWS</nuxt-link></li>
</ul>
</div>
</template>
<script>
export default {
}
</script>
<style>
</style>
params传递参数
路由经常需要传递参数,我们可以简单的使⽤params来进⾏传递参数,我们现在向新闻页⾯(news)传递个参数,然后在新
闻页⾯进⾏简单的接收。
我们先修改pages下的Index.vue⽂件,给新闻的跳转加上params参数,传递3306ID。
<template>
<div>
<ul>
<li><nuxt-link :to="{name:'index'}">HOME</nuxt-link></li>
<li><nuxt-link :to="{name:'about'}">ABOUT</nuxt-link></li>
<li><nuxt-link :to="{name:'news',params:{newsId:3306}}">NEWS</nuxt-link></li>
</ul>
</div>
</template>
<script>
export default {
components: {
}
}
</script>
<style>
</style>
在news⽂件夹下的index.vue⾥⽤$route.params.newsId进⾏接收,代码如下。
<template>
<div>
<h2>News Index page</h2>
<p>NewsID:{{$route.params.newsId}}</p>
<ul>
<li><a href="/" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Home</a></li> </ul>
</div>
</template>
补充知识:nuxt路由中的params和query
定义路由
路由表,配置的整个项⽬中可以访问的所有的路由信息
建议每⼀个路由都加⼀个name属性,在页⾯跳转的时候使⽤
建议name不能重复
const router=new VueRouter({
routes:[
{
path: '/detail', // 表⽰路径,表⽰url地址栏中输⼊的内容
component: Home, // 表⽰访问这个地址的时候显⽰哪⼀个组件
name: 'H', // 名字
}
]
})
路由跳转
1.router-link to属性设置跳转信息
to可以直接设置⼀个字符串,表⽰跳转的url地址
to可跟⼀个对象,建议使⽤此⽅法,跳转的时候使⽤name
2.编程式跳转
$router.push
路由传参
1.query 表⽰参数在url后⾯进⾏传递,参数直接拼在url地址栏的后⾯,⽤?分割⼀下,多个参数⽤&分割
获取使⽤ $route.query
2.params 表⽰在routes定义的时候可以使⽤ “:参数名”的形式进⾏占位处理
可以传递多个参数如果要保证页⾯刷新之后参数还可以使⽤,需要在routes中做配置
获取使⽤ $route.params
(细节重点)如果想要在页⾯刷新或者执⾏其它操作之后还保留传递的参数,需要在路由表(routes)中作配置,使⽤ “:参数名”的形式进⾏占位处理
补充
当使⽤了vue-router组件之后
项⽬中会⾃动⽣成两个变量 $route $router
$route 表⽰当前页的路由信息获取获取地址 query params等参数
$router 表⽰路由对象可以在上⾯访问路由的跳转⽅法
$route.params 获取params传的参数
$route.query 获取query传的参数
// vue-router学习笔记记录开发中的点点滴滴
跳转路由的⼏种⽅式:
1、声明式:
1) 根据路由路径(/home/sort/detail)跳转 <router-link :to="{path: '/home/sort/detail', query:{id: 'abc'}}">点击查看⼦页⾯
</router-link>
2) 根据路由名称(detail)跳转 <router-link :to="{name: 'detail', params:{id: 'abc'}}">点击查看⼦页⾯</router-link> :to="" 可以实现绑定动态的路由和参数
2、编程式:
1) this.$router.push({path: '/home/sort/detail',query:{id: 'abc'}})
2) this.$router.push({name: 'detail',params:{id: 'abc'}})
备注: params 和 query 传参的区别:
1、params传参时参数不会出现在url的路径上⾯,但是刷新页⾯时param⾥⾯的数据会消失
2、query传参时参数出现在url的路径上⾯,刷新页⾯时query⾥⾯的数据不变
以上这篇Nuxt的路由配置和参数传递⽅式就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。