让我们一起检查一下:
查询字符串
querystring 模块提供用于解析和格式化的实用程序
URL 查询字符串。
它是 NodeJS API 的一部分,在 v0.1.25 中引入。
我们可以观察到它有4个主要功能:escape, parse, stringify, unescape
(自v0.1.25以来,除了parse函数之外的所有函数都是一样的。)
~querystring.parse的历史:
Version Changes
v8.0.0 Multiple empty entries are now parsed correctly (e.g. &=&=).
v6.0.0 The returned object no longer inherits from Object.prototype.
v4.2.4 The eq parameter may now have a length of more than 1.
正如您所见,它是一个简单的主要目的的解决方案。
qs 模块:
添加了一些查询字符串解析和字符串化库
安全。
(撰写本文时)
让我们看一下qs.parse 函数:
qs 允许您在查询字符串中创建嵌套对象,通过
用方括号 [] 包围子键的名称。例如,
字符串 'foo[bar]=baz' 转换为:
assert.deepEqual(qs.parse('foo[bar]=baz'), {
> foo: {
> bar: 'baz'
> } });
相对于查询字符串,它可以解析嵌套对象...
默认情况下,当嵌套对象时,qs 最多只会解析 5 个子对象
深的。这意味着如果您尝试解析类似的字符串
'a[b][c][d][e][f][g][h][i]=j' 你得到的对象将是:
var expected = {
a: {
b: {
c: {
d: {
e: {
f: {
'[g][h][i]': 'j'
}
}
}
}
}
}
};
深度可以被覆盖:
var deep = qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 8 });
...与 Query String
相比,这只是此软件包提供的众多功能之一
The qs.stringify function has also many more options
我会说qs 是一个高级解决方案。
问题:
我已阅读 qs 和 querystring 文档,但找不到任何
明显的区别,所以我在这里寻求帮助。
答案:
它们在目的上没有什么不同。
querystring 有一些限制,但最后,这取决于您的需求...