鍍金池/ 問(wèn)答/HTML/ qs和query-string有什么區(qū)別?

qs和query-string有什么區(qū)別?

兩個(gè)模塊都有parse和stringify方法啊,他們有什么區(qū)別呢?

回答
編輯回答
雨萌萌

兩個(gè)完全不同的模塊...雖然經(jīng)常有人是const fs=require("querystring")。然而它們沒半毛錢關(guān)系

querystring(文檔)是node的核心模塊,主要用來(lái)自定義url的分隔符,大概像這樣:

querystring.parse('a^4~f^6','~','^')
//{ a: '4', f: '6' }

qs模塊需要通過(guò)npm安裝,最早是由TJ大神編寫的。它是A querystring parser with nesting support,即一個(gè)支持嵌套的查詢字符串解析器,示例:

var expected = {
    a: {
        b: {
            c: {
                d: {
                    e: {
                        f: {
                            '[g][h][i]': 'j'
                        }
                    }
                }
            }
        }
    }
};
var string = 'a[b][c][d][e][f][g][h][i]=j';
assert.deepEqual(qs.parse(string), expected);

看上去有些奇葩,不過(guò)我看它昨天有738,087的下載量,估計(jì)有很多模塊是依賴它的。

2017年6月16日 07:11
編輯回答
離夢(mèng)

簡(jiǎn)單來(lái)說(shuō)就是qs可以轉(zhuǎn)換任意類json格式的數(shù)據(jù),而querystring只能轉(zhuǎn)換平面數(shù)據(jù)結(jié)構(gòu),qs的功能更加強(qiáng)大
https://stackoverflow.com/que...

2018年7月7日 03:22
編輯回答
夏木
require('qs').parse(require('url').parse('https://xxx.com/xxx?from=xxx').search)
// { '?from': 'xxx' }
require('query-string').parse(require('url').parse('https://xxx.com/xxx?from=xxx').search)
// { from: 'xxx' }
2017年3月12日 21:59