IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue-router params与query使用及区别 -> 正文阅读

[JavaScript知识库]vue-router params与query使用及区别

前置知识

url的语法

大多数的url都是由9个部分组成

<scheme>://<user>:<password>@<host>:<port>/<path><params>?<query>#<frag>
  • scheme方案名称即协议名称,表示用哪种协议访问服务器,如http、https
  • user用户:某些方案访问资源时需要的用户名,有些服务器要求输入用户名密码才会允许用户访问数据,如ftp
  • password密码
  • host服务器主机标明资源所在服务器,可以用ip也可以用域名,如果不需要提供user和password,则@省略
  • port端口表示服务器正在监听的网络端口,即应用部署占用的端口号,默认80
  • path路径:表明资源所在服务器路径如/seas/index.html
  • params参数
  • query查询字符串:可以通过地址栏的查询参数来缩小查询范围,用?来与前面做区分,采用key=value的方式,如果有多组查询参数中间用&区分如xx?name=‘san’&age=‘18’
  • frag片段:有些资源我们可以定位到具体的章节或片段,http服务器通常只处理整个对象,而不是对象的片段,所以这个片段更多的是浏览器在做,浏览器从服务器获取整个资源之后,会根据片段来显示感兴趣的内容,也就是我们之前说的锚点。

vue-router基本知识

  1. 路由配置的时候主要参数有name路由别名,path路由地址,component映射的组件,还有别的我们案例里用不到就没有展开。
  2. 如果是动态路由需要在path利用占位符占位

query

<router-link :to="{ name: 'W', query: { id:'1234',age:'12' }}"/>
<router-link :to="{ path: '/W', query: { id:'1234',age:'12' }}"/>

路由配置

//router.js
import Vue from 'vue';
import VueRouter from 'vue-router';
Vue.use(VueRouter);
const routes = [
  path: '/hhhhhhh',
  name: 'W',
  component: W
},{
  path: '/W', 
  name: 'hhhhhhhh',
  component: W
}
]

const router = new VueRouter({
    mode:'hash',
    routes
})

export default router

结论:query与name、path都可以搭配使用

如果是name与query,则会根据name找到path并把path拼接到url上

http://localhost:8080/#/hhhhhhh?id=1234&age=12

如果是path与query,直接将path匹配到路由上
http://localhost:8080/#/W?id=1234&age=12

获取到时候可以用this.$route.query.id来获取到具体到查询参数

params

<router-link :to="{name:'webHomeB',params:{method:'name',type:'params'}}">Home(name与params)</router-link>
<router-link :to="{path:'/home',params:{method:'path',type:'params'}}">Home(path与params)</router-link>

路由配置:

//router.js
import Vue from 'vue';
import VueRouter from 'vue-router';
Vue.use(VueRouter);
const routes = [{
    path:'/home',
    name:'webHome',
    component:webHome
},{
    path:'/home/:method/:type',
    name:'webHomeB',
    component:webHome
}
]

const router = new VueRouter({
    mode:'hash',
    routes
})

export default router

this.$route的内容
Home(name与params):http://localhost:8080/#/home/name/params

fullPath: "/home/name/params"
hash: ""
matched: [{…}]
meta: {}
name: "webHomeB"
params: {method: "name", type: "params"}
path: "/home/name/params"
query: {}

Home(path与params):http://localhost:8080/#/home

fullPath: "/home"
hash: ""
matched: [{…}]
meta: {}
name: "webHome"
params: {}
path: "/home"
query: {}

结论:params只能与name搭配使用

params可以理解为动态路由,也就是地址栏中的地址是动态变化的,所以在path的时候就需要占位且变量占位后不能发生变更。所以可以看到params要求更加严格一些。

获取使用this.$route.params.method来获取

总结

通过上述知识的了解我们总结出以下几点:

  • params可以理解为动态路由,即path存在变化(非请求参数或者说?前面的地址存在变化)
  • query可以理解为查询参数,不会改变改变路由path,只是在后面拼接参数
  • params因为path会被改变,因此只能与name搭配使用,且path中需要提前定义占位符如:id,获取的时候必须用$route.params.id获取
  • query可以与name、path搭配使用,使用this.$route,query[xx]进行获取

思考

  • path没有占位符占位但利用name与params进行导航,地址栏是否有变化?无变化,需要path处用变量占位才可以生效
  • 如果path有动态路由且需要有查询参数应该如何处理?目前看是没有见到此类需求,小伙伴如果有结论也可以评论想学习一下
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-16 11:38:44  更:2021-08-16 11:40:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:49:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码