javaScript:queryString模块和qs模块的基本使用与区别

queryString模块和qs模块的基本使用和区别

1、相同点

这两个模块都可以用来将对象转成查询字符串【stringify()方法】或者把查询字符串转为对象【parse()方法】

  • 安装
npm i query-string
npm i qs

2、对比两个模块中的stringify()和parse()方法

  • stringify()方法
// 引入模块
const queryString = require("query-string")
const qs = require("qs")

// 测试对比stringify()方法
let obj1 = {name:'Tom',age:30}
let obj2 = {name:["Tom","jerry"],age:25}
let obj3 = {name:{firstName:"jeffery",lastName:"Jim"},age:"20"}


// queryString模块
console.log(queryString.stringify(obj1)); // age=30&name=Tom
console.log(queryString.stringify(obj2)); // age=25&name=Tom&name=jerry  
console.log(queryString.stringify(obj3)); // age=20&name=%5Bobject%20Object%5D

// qs模块
console.log(qs.stringify(obj1)); // name=Tom&age=30
console.log(qs.stringify(obj2)); // name%5B0%5D=Tom&name%5B1%5D=jerry&age=25
console.log(qs.stringify(obj3)); // name%5BfirstName%5D=jeffery&name%5BlastName%5D=Jim&age=20

可以看到两个现象,(1)queryString只进行了浅层次的解析,也就是只解析了第一层,而qs则进行了深层次解析,将数组中的元素,以及对象中的属性都进行了解析(2)两者解析出来的结果中无论是{}还是[]都被换成了数组名%5Bxxx%5D=某值"或者对象名%5Bxxx%5D=某值的形式。

  • parse()方法
// 引入模块
const queryString = require("query-string")
const qs = require("qs")

let url1 = "?name=jim"
let url2 = "#age=21" // hash模式下的取值
let url3 = "name=jim&age=21"

console.log(queryString.parse(url1)); // { name: 'jim' }
console.log(queryString.parse(url2)); // { age: '21' }
console.log(queryString.parse(url3)); // { age: '21', name: 'jim' }

console.log(qs.parse(url1)); // { '?name': 'jim' }
console.log(qs.parse(url2)); // { '#age': '21' }
console.log(qs.parse(url3)); // { name: 'jim', age: '21' }

3、其他方法

建议直接看官网
npmjs-query-string
npmjs-qs

4、总结对比

1、qs和querystring是两个完全不同的模块;
2、query-string是node的核心模块,用于处理(解析和格式化)URL的查询字符串;
3、qs是一个增加了安全性的查询字符串解析和字符串序列化的库;
4、qs可以对深层次结构的对象进行解析,而query-String不行

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值