Nuxt的路由配置和参数传递方式


Posted in Javascript onNovember 06, 2020

学习前端框架都要学习路由机制,因为路由可以体现我们的业务逻辑,把模块串联起来,让程序换发光彩。

那简单的说路由就是我们的跳转机制,也可以简单理解成链接跳转。

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的路由配置和参数传递方式

<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的路由配置和参数传递方式

补充知识: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的路由配置和参数传递方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript基本语法分析说明
Jun 15 Javascript
javascript实现的网页局布刷新效果
Dec 01 Javascript
jQuery 1.4 15个你应该知道的新特性(译)
Jan 24 Javascript
提示$ is not defined错误分析及解决
Apr 09 Javascript
页面定时刷新(1秒刷新一次)
Nov 22 Javascript
jQuery中bind与live的用法及区别小结
Jan 27 Javascript
jquery通过name属性取值的简单实现方法
Jun 20 Javascript
js编写简单的聊天室功能
Aug 17 Javascript
Angular6新特性之Angular Material
Dec 28 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
Sep 16 Javascript
关于vue3默认把所有onSomething当作v-on事件绑定的思考
May 15 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
Aug 31 Javascript
nginx配置域名后的二级目录访问不同项目的配置操作
Nov 06 #Javascript
Jquery Fade用法详解
Nov 06 #jQuery
nuxt静态部署打包相对路径操作
Nov 06 #Javascript
全网小程序接口请求封装实例代码
Nov 06 #Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
Nov 06 #Javascript
微信小程序自定义tabBar的踩坑实践记录
Nov 06 #Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
Nov 06 #Javascript
You might like
Body是什么,该怎么喝出咖啡里的口感
2021/03/03 咖啡文化
php获取ip的三个属性区别介绍(HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)
2012/09/23 PHP
『PHP』PHP截断函数mb_substr()使用介绍
2013/04/22 PHP
PHP根据图片色界在不同位置加水印的方法
2015/07/01 PHP
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
关于jquery css的使用介绍
2013/04/18 Javascript
JS去除字符串两端空格的简单实例
2013/12/27 Javascript
SinaEditor使用方法详解
2013/12/28 Javascript
一个JavaScript的求爱小特效
2014/05/09 Javascript
jquery动态调整div大小使其宽度始终为浏览器宽度
2014/06/06 Javascript
javascript面向对象之访问对象属性的两种方式分析
2015/01/13 Javascript
浅谈JavaScript Math和Number对象
2015/01/26 Javascript
JavaScript实现select添加option
2015/07/03 Javascript
jQuery实现的背景动态变化导航菜单效果
2015/08/24 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
JavaScript基础——使用Canvas绘图
2016/11/02 Javascript
Javascript中字符串和数字的操作方法整理
2017/01/22 Javascript
AngularJS报错$apply already in progress的解决方法分析
2017/01/30 Javascript
ReactNative踩坑之配置调试端口的解决方法
2017/07/28 Javascript
微信小程序自定义导航栏实例代码
2019/04/05 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
python异常和文件处理机制详解
2016/07/19 Python
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
Python如何使用k-means方法将列表中相似的句子归类
2019/08/08 Python
给大家整理了19个pythonic的编程习惯(小结)
2019/09/25 Python
python3通过udp实现组播数据的发送和接收操作
2020/05/05 Python
英国领先的大码时装品牌之一:Elvi
2018/08/26 全球购物
迪士尼西班牙官方网上商店:ShopDisney西班牙
2020/02/02 全球购物
求职推荐信范文
2013/12/01 职场文书
2014厂务公开实施方案
2014/02/17 职场文书
2014年预备党员端正入党动机思想汇报
2014/09/13 职场文书
法学专业求职信范文
2015/03/19 职场文书
免职通知
2015/04/23 职场文书
Python序列化与反序列化相关知识总结
2021/06/08 Python
MySQL系列之五 视图、存储函数、存储过程、触发器
2021/07/02 MySQL