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 相关文章推荐
node.js学习总结之调式代码的方法
Jun 25 Javascript
JavaScript中的条件判断语句使用详解
Jun 03 Javascript
js基础知识(公有方法、私有方法、特权方法)
Nov 06 Javascript
WordPress中利用AJAX技术进行评论提交的实现示例
Jan 12 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
Jul 06 Javascript
纯JavaScript实现实时反馈系统时间
Oct 26 Javascript
解决vue中post方式提交数据后台无法接收的问题
Aug 11 Javascript
jQuery实现轮播图及其原理详解
Apr 12 jQuery
angular4笔记系列之内置指令小结
Nov 09 Javascript
JS跨域请求的问题解析
Dec 03 Javascript
一文看懂如何简单实现节流函数和防抖函数
Sep 05 Javascript
vue-cli脚手架的.babelrc文件用法说明
Sep 11 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
用PHP连mysql和oracle数据库性能比较
2006/10/09 PHP
PHP获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
2009/10/11 PHP
windows下升级PHP到5.3.3的过程及注意事项
2010/10/12 PHP
php压缩多个CSS为一个css的代码并缓存
2011/04/21 PHP
php图片添加水印例子
2016/07/20 PHP
PHP文件操作实例总结【文件上传、下载、分页】
2018/12/08 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
2018/12/21 PHP
JSON格式化输出
2014/11/10 Javascript
jQuery实现的简单百分比进度条效果示例
2016/08/01 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
vue中引用swiper轮播插件的教程详解
2018/08/16 Javascript
如何实现一个webpack模块解析器
2018/10/24 Javascript
vue+webpack dev本地调试全局样式引用失效的解决方案
2019/11/12 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
python实现批量转换文件编码(批转换编码示例)
2014/01/23 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
详解python-图像处理(映射变换)
2019/03/22 Python
python错误调试及单元文档测试过程解析
2019/12/19 Python
python文件处理fileinput使用方法详解
2020/01/02 Python
Pytorch基本变量类型FloatTensor与Variable用法
2020/01/08 Python
TensorFLow 不同大小图片的TFrecords存取实例
2020/01/20 Python
Python3实现飞机大战游戏
2020/04/24 Python
python tkinter的消息框模块(messagebox,simpledialog)
2020/11/07 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
2021/01/27 Python
canvas学习笔记之2d画布基础的实现
2019/02/21 HTML / CSS
Etam德国:内衣精品店
2019/08/25 全球购物
北欧最好的童装网上商店:Babyshop
2019/09/15 全球购物
什么是唯一索引
2015/07/05 面试题
创立科技Java面试题
2015/11/29 面试题
应届生体育教师自荐信
2013/10/03 职场文书
办公室内勤工作职责
2013/12/11 职场文书
房屋公证委托书
2014/04/03 职场文书
会议室标语
2014/06/21 职场文书
护士个人总结范文
2015/02/13 职场文书
争先创优个人总结
2015/03/04 职场文书
自愿离婚协议书范本2016
2016/03/18 职场文书