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 相关文章推荐
Apply an AutoFormat to an Excel Spreadsheet
Jun 12 Javascript
csdn 博客中实现运行代码功能实现
Aug 29 Javascript
js实现表单多按钮提交action的处理方法
Oct 24 Javascript
深入理解JS addLoadEvent函数
May 20 Javascript
easyui关于validatebox实现多重规则验证的方法(必看)
Apr 12 Javascript
Angular.JS中指令ng-if、ng-show/ng-hide和ng-switch的使用教程
May 07 Javascript
详解Vue双向数据绑定原理解析
Sep 11 Javascript
详解easyui基于 layui.laydate日期扩展组件
Jul 18 Javascript
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
Jul 24 Javascript
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
Sep 26 Javascript
vue+webpack中配置ESLint
Nov 07 Javascript
JS实现简单的表格增删
Jan 16 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 strip_tags()去除HTML、XML以及PHP的标签介绍
2014/02/18 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
PHP实现的基于单向链表解决约瑟夫环问题示例
2017/09/30 PHP
JS 控制CSS样式表
2009/08/20 Javascript
JQueryEasyUI datagrid框架的基本使用
2013/04/08 Javascript
iframe的父子窗口之间的对象相互调用基本用法
2013/09/03 Javascript
JS获取IMG图片高宽的简单实例
2016/05/17 Javascript
javascript监听页面刷新和页面关闭事件方法详解
2017/01/09 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
ES6中Math对象新增的方法实例详解
2017/04/25 Javascript
Node.js安装配置图文教程
2017/05/10 Javascript
Node.js pipe实现源码解析
2017/08/12 Javascript
bootstrap3-dialog-master模态框使用详解
2017/08/22 Javascript
详解Vue组件实现tips的总结
2017/11/01 Javascript
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
Vue的事件响应式进度条组件实例详解
2018/02/04 Javascript
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
2018/02/07 Javascript
JavaScript多态与封装实例分析
2018/07/27 Javascript
通过实践编写优雅的JavaScript代码
2019/05/30 Javascript
在小程序中推送模板消息的实现方法
2019/07/22 Javascript
小程序中英文混合排序问题解决
2019/08/02 Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
2019/11/18 jQuery
[01:03:33]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Django Highcharts制作图表
2016/08/27 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
2018/11/15 Python
anaconda中更改python版本的方法步骤
2019/07/14 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
Python如何实现邮件功能
2020/05/27 Python
使用Python操作MySQL的小技巧
2020/09/10 Python
雷蛇美国官网:Razer
2020/04/03 全球购物
eDreams德国:南欧领先的在线旅游公司
2020/12/07 全球购物
Ajax实现页面无刷新留言效果
2021/03/24 Javascript
土木工程专业个人求职信
2013/12/30 职场文书
初中同学聚会感言
2014/02/11 职场文书
公司2014年度工作总结
2014/12/10 职场文书
避坑之 JavaScript 中的toFixed()和正则表达式
2022/04/19 Javascript